黑马程序员——-C#语言面向过程基础

  • Post author:
  • Post category:其他



———————- <a href=”


http://edu.csdn.net


“target=”blank”>ASP.Net+Android+IOS

开发

</a>




<a href=”


http://edu.csdn.net


“target=”blank”>.Net

培训

</a>

、期待与您交流!

———————-

一、Dot net

开发工具:


Visual Studio

二、Dot net

平台特征:跨语言(


C#





VB.Net





F#





IronPython



三、.NET Framework

框架:为不同的基于


.NET


的语言提供相同的类库、函数库。

四、.NET Frameword

框架优点:跨语言、跨平台、使用安全。

五、.Net

版本:


visual studio 2003





.Net1.1


)、


visual studio 2005





.Net2.0


)、


visual studio 2008





.Net3.X


)、


visual studio 2010





.Net4.X



分为:

Express


(免费版)、


Standard


(标准版)、


Professional


(专业版)、


Team Suite


(团队版)

六、C#

语言与


.Net Framework

.Net Frameword

是一个框架,基本上包括


CLR





common lauguage runtime


)公共语言运行时,


BCL





basic class library


)基本类库。而


C#


是运行在


.Net Frameword


上的一种基本语言。

七、C#

语法特点:

(1)从上到下一条条语句的一次执行。

(2)大小写敏感(区分大小写)。

(3)每写完一条语句用“;”与下一个语句隔开。

(4)C#

语言用到的一些符号像引号

” ”,逗号

,


分号


;


等等都要是英文半角状态下的。

八、C#

语言基本结构:


C#


文件是


.cs


结尾的文件。

using System;                                      //

引用命名空间

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1                       //

本程序所在的命名空间

{

class Program                                  //


{                                            //

不管是


Windows


程序

static void Main(string[] args)                 //

还是


Web


应用程序

{                                        //

还是控制台程序等等

Console.WriteLine(“HELLO WORLD!!”);  //

都要有一个


Main


()函数

Console.ReadKey();                    //

且只能有一个,它是程序的入口点

}

}

}

一开始学习

C#


语言是从控制台程序开始的,最先接触的是三句话:

1、Console.WriteLine(“要输出的内容”)


2、String  s =Console.ReadKey()

;将控制权交给用户,通常定义一个


String


(字符串类型)变量来接收它的值

3、Console.ReadKey()

;让程序停下来,可以看到执行结果。

九、C#

语言基本语法:

(1)注释:

1)单行注释:

//


要注释的内容

2)多行注释:

/*


多行注释

的内容

*/

(2)占位符的使用:占位符从零开始,是第二个参数开始的顺序,注意定义几个

{}


,后面就要有相对应参数的个数。

例如:

Console.WriteLine(

“{0}+{1}={2}”,第一个参数(填补

{0}


),第二个参数(填补


{1}


,第三个参数(填补


{2}


))


);

示例:

Console.WriteLine(“{0}+{1}={2}”,10,20,30); //10





20





30


也可以是任意类型的变量。

(3)变量

变量的概念:变量就是盛放数据的容器。

变量的声明:变量类型 变量名

变量声明示例:

int num=10;  //


定义了一个


int


类型的变量,名字是


num


,用


=


号赋值为


10

变量的定义规则:在程序中不能出现重复定义

string s=

””,string s=””;

也就是一个变量名不能重复定义,也不能两种类型同用一种名称,例如:


string s=

””,int s=10 ,

这也是错误的。

变量的使用规则:先定义,再赋值,后使用

变量名与字符串的值得混淆:

Int  i=10;

Console.WriteLine(i);  //

结果是


10


,因为


int


类型的变量


i


指向的是


10



Console.WriteLine(“i”);//

结果是


i,


因为这是一个字符串。

变量的命名规则:第一个字符是字符或者下划线,后可以是任意字母,数字,下划线,不要使用

C#


中的关键字。(可以使用中文,但是很少用中文)

变量的作用域:在{内定义的变量,只能在}之内可以使用。

(4)基本的数据类型:

1)String

字符串类型,它的值要放在双引号中(可以看做多个单个字符组成)。

2)Int

数字类型,不用引号。

3)Char

单个字符,用单引号

4)Bool

只有


true





false

5)Decimal:

货币

6)Byte;

字节

7)Double :

双精度

8)Long;

长整型

9)Float:

单精度

(5)转义符

“abc” 这是一个字符串,如果要让控制台输出引号,二不当做字符串来处理这时要用到的就是转义符

用法是:

\


要转义的字符

例如:

\

” 代表这是一个引号

其他转移字符:

\’ 单引号  ;

\

””双引号 ;

\\


斜线 ;


\b


退格 ;


\n


换行 ;


\r


回车 ;


\t


制表符

不转义:在字符串前加

@

(6)数据类型的转换

显示转换:源类型可以转为目标类型的转换,但有可能出错的转换,需要程序员进行强制转换。

例如:

int i=10;

double d=20;

int c=i+(int) d         //

需要显示把


double d


转换成


(int)

Console.WriteLine(c);

隐式转换:源类型一定可以转为目标类型的转换,系统可以自动转换

例如:

int i =10 ;

double d=20;

double c =i+d;          //

系统自动将


i





int


类型转成了


double

Console.WriteLine(c);

但是上面的两个例子值适合在数字类型之间转换,如果想要在字符串,数字,字符之间转换,

则可以调用

Convert.ToInt32(); //


转换成为数字类型

转换失败不会报错返回

bool





Int.TryParse();


还有


double.TryParse() , char.TryParse()


等等

转换失败就会报错返回转换后

Int





Int.Parse();


还有


double.Parse(),char.Parse()


等等

一般数据类型都可以转换为字符串类型

(7)运算符

+

:如果是数字类型则执行数字的值相加操作,如果是两个字符串则是连接两个字符串。



:两个数字类型的值相减

*

:两个数字的值相乘

/

:连个数字的值相除

%

:两个数字相除后取余数(取模)

=

:赋值运算符 把“


=


”右边的值或者表达式的值赋给左边的变量

+=

:例如:


i +=3;


等价于


i=i+3;

-=




i-=3


等价于


i=i-3;

*=




i*=3


等价于


i=i*3;

/=




i/=3


等价于


i=i/3;

++

:自增运算,每次自动增


1


,例如


i=1;i++;       i


的值为


2





:自减运算,每次自动减


1


,例如


i=2;i–;         i


的值为


1



==




bool


类型的运算,有两种结果


true





false


判断左侧表达式的值是否等于右边



=


:判断左侧表达式的值是否不等于右边 (!是取反)

<

:小于号 判断左侧值是否小于右侧值

>

:大于号 判断左侧值是否大于右侧值

<=

:小于等于  判断左侧值是否小于等于右侧值

>=

:大于等于  判断左侧值是否大于等于右侧值

&&

:并且运算   表达式


1 &&


表达式


2


结果是


bool


类型,只有两边表达式都为


true,


结果才是


true,


有一个为


false,


结果就是


false.

||

:或者运算  表达式


1||


表达式


2


,结果是


bool


类型,有一个为


true,


结果就为


true ,

两边表达式都为

false


是,结果才是


false.

(8)结构控制语句

选择控制语句

容易出现的错误:

1




if(


表达式


)





{



语句块


} //


()后不能加“;”,否则,它将代表


if


结束,不执行


{}


中的语句。

2

、如果


{}


内只有一条语句,可以省略


{}


,但有多条语句不能省略,否则,值执行一条语句。

1




if  …else …

If(

表达式


)   {



语句块


1 }


如果


if


表达式的值为


true


就执行语句块


1

Else        {


语句块


2}


如果


if


表达式的值为


false


就执行语句块


2

2)if … Else if … Else if … Else …

If (

表达式


) {



语句块


}


依次执行


if ,else if


内的表达式,一旦有满足的条件

Else if

(表达式)


{



语句块


}


就执行


{}


内的语句,执行后立刻跳出不在往下做

Else if  (

表达式


) {



语句块


}


判断。如果都不满足,有


else


则执行


else


内语句

…..

没有


else


就退出不执行了

Else {


语句块


}

3)If

(表达式)


{



语句块


}


可以单独使用


if


如果表达式满足条件则执行,否则不执行

4)If ….

或者


if … Else …


可以嵌套使用


if


或者


else

例如:

if (


表达式


)

{

……………….

If (

表达式


)

{

……………….

}

Else

{

If (……)

{

}

}

}

5)Switch (

匹配值


)   {case





:


语句 ;


break;…….}

Switch

语句也是选择匹配的项来执行,只是,匹配的是单个确定的值,不是变量或者表达式。

示例:

Int i =10;

Switch (i)

{

Case 10:Console.WriteLine(“您输入了

10

”);break;

Case 20:Console.WriteLine(“您输入了

20

”);break;

Default :Console.WriteLine(“都不是”);break;

}

注意:如果上面的例子

case


写成:

Case 10:

Case 20:

Case 30:Console.WriteLine(“你输入了

10





20


或者


30

”);

则是不管匹配的是

10





20


还是


30


都执行


Case 30


:后面的语句。

循环语句

1)While (

条件


)  {



要循环执行的语句


}//


先判断条件,只要


while


后括号内的表达式为


true


就循环执行


{}


内的语句

2)Do {


语句


} while


(条件)


//


先执行{}内语句,在判断


while()


括号内的条件,不管条件满不满足都执行一次{}内语句。

3)For (

变量初始值;判断条件;执行后条件


) //


判断条件是


bool


类型的值

示例:

for (int i=0;i<100;i++)

{

循环语句;

………..

}

4)foreach (

变量类型 临时变量


in


数组名称


)

{

……………

}

比较以上三种循环控制结构:

(1)do {} while()

先执行一次,在判断是否满足条件继续执行(至少执行一次{}内语句)

(2)While

()


{}


先判断条件是否满足,如果不满足条件,则不执行

(3)For

一般在知道循环次数的条件下使用,并且可以有选择的执行数组元素。

(4)Foreach

一般用于遍历数组的每一个元素,是只读的。

5)循环中断

关键字:

return  continue break;

Break;

立即中止循环,并且跳出整个循环,继续往下执行。

Continue:

立即中止本次循环,并且执行下一次的循环

Return:

(在控制台程序中)立即退出整个


Main


()函数。

顺序结构:

一般在没有选择控制语句,与循环语句的情况下,程序是从上到下依次执行的

(9)枚举类型

为了限定变量的取值范围,保证数据的有效性,而定义的枚举类型。

其特点是其值是确定的几个取值范围。例如性别,男或女

枚举是一个类型,和类类型一样,定义在命名空间内。

声明枚举语法:

Enum

枚举名

{



1





2



………………..

}

其中,它的每个值都是有

int


类型的,默认是从


0


开始,也可以给它赋值:

例如:

Enum fruit

{

Apple =1,   //

这样就从


1


开始

Orange=2,

Strawberry=3,

………….

}

(10)函数

函数:实现代码复用,有时,在程序中,需要反复用到一段代码,因此,可以写成一个函数。

函数可以理解成完成特定功能的代码段,需要反复执行这段代码而写成的一个函数。

语法

[


访问修饰符


] [static]


返回值类型 方法名  (


[


参数列表


]



代码段

例如:

public static void Method(string name,int age) //

连个参数,无返回值

{

Console.WriteLine(”

大家好,我叫


{0}


,今年


{1}


岁了


“,name,age);

}

函数可以构成重载:

重载就是函数的重名,当调用这个函数时,系统会根据参数类型和个数来自动调用匹配的函数。

构成函数重载的条件:

函数名称相同

函数的签名必须不同(函数签名就是函数的参数列表,参数类型不相同,或者个数不相同)

返回值类型可以不相同

例如:下面的两个函数就构成了重载,因为他们的参数类型不相同。

Public static int Add(int a,int b)    //

两个


int


类型的参数,返回值是


int


类型

{

Return  a+b;

}

Public static double Add(double a,double b) //

两个


double


类型的参数,返回值是


double


类型

{

Return  a+b;

}

十、字符串的常用函数



1


)字符串的特性:

字符串是不可改变的,一个字符串就是一个字符数组,它可以利用索引来访问每一个指定的字符,但是不能改变它。

如果想要改变某个字符,就要通过调用

ToCharArray


()方法,转换成


char


类型的数组,然后再修改某个字符。

例如:

String s=”world”;

S[3]=’a’;  //

这个是错误的,因为字符串的每个字符是只读的,只能访问,不能修改,字符串一旦声明就不能够改变了。

String s=”world”;

Char  []   s2=s.ToCharArray();  //

这样就可以修改了,转成


char


类型的数组后,在对数

S2[3]=’a’;                     //

组进行某个元素的更改。然后在转换成新的字符串。

String s2=new string(s2);         //

这个新的字符串就是修改了某个元素之后的值。

下面的字符串:

String s1=”me”;  //

字符串


s1


的值是

“me”

S1=”you”;      //

这时


s1


的值是

”you”,

但是字符串并没有改变,

”me”这个字符串还是在内存

//

中,只是,


s1


指向了另一个字符串。

String s1=”sa”; //

执行这句话的时候,系统在线程栈中声明了


s1,


并且在堆中给

”sa”这个字符串分配了内存空间,把指向”sa”的地址复制了一份给了

s1,


这是,


s1


便指向了这一地址指向的值

”sa”.

String s1;

S1=”sa”;  //

执行了这句话后


…..

S1=”you”; //

执行了这句话之后,又改变了


…….



2


)转换大小写

ToLower() //

把字符转换为小写。

ToUpper() //

把字符转换为大写。

注意:

String s =”flower”;

s.ToUpper()  //

错误,字符串是不可改变的,并没有转换为大写。

String s1=s.ToUpper() //

这样把转换为大写之后的字符串的地址复制给


s1,





s1


指向这个新的字符串。



3


)去掉字符串空格

Trim(); //

去掉字符串两边的空格

TrimStart() //

去掉字符串左侧空格

TrimEnd() //

去掉字符串右侧空格



4


)字符串的相等比较:

Equals()

例如:

string s1 = “aa”;

bool b = s1.Equals(” AA”);

Console.WriteLine(b); //

执行结果为


false


,因为括号内字符串是大写,不过


Equels()


方法有重载,可以利用枚举,选择不区分大小写。

bool b = s1.Equals(“AA”,StringComparison.OrdinalIgnoreCase);



5


)字符串的大小比较:

CompareTo();

例如:

string s1 = “11”;   //

如果调用者比括号内大,则返回


1


,否则返回


-1



string s2 = “21”;

int i=s1.CompareTo(s2);   //

执行结果


-1



6


)字符串的分割

Spilt();  //

可以将某个字符串按照某个字符,分割成一个数组

string s1 = “aa,bb,cc,dd|ff|ee”;

string[] s = s1.Split(‘,’,’|’);//

将字符串


s1


,以

”,”与”|”进行分割

结果是

aa  bb  cc  dd   ff   ee


等组成的字符串数组。

Spilt()

方法有一种重载:

string[] s = s1.Split(c,StringSplitOptions.RemoveEmptyEntries); //

后面是一个枚举类型的,作用是可以移除一些空项。

(7)字符串的替换

Replace()

函数

使用方法:

string s = “I like books,I enjoy eating books”;  //

声明一个字符串


s

string s1=s.Replace(“books”, “apples”);       //

把字符串中的所有

”books”改成”apples”

Console.WriteLine(s1);                    //

结果是


I like apples,I enjoy eating apples

(8)截取子字符串

SubString (int  a) //

重载一:从


a


开始,一直截取到最后

示例:

string s = “I like books,I enjoy eating books”;

string s1 = s.Substring(13); //




13


个元素是第二个


I

Console.WriteLine(s1);    //

因此结果是


I enjoy eating books

SubString(int a,int length)//

重载二:从


a


开始,截取


length


个元素


length


是截取的长度。但是如果


length


参数超过了字符串的长度,就会报错了。

示例

:

string s = “I like books,I enjoy eating books”;

string s1 = s.Substring(13,7);  //

从第二个


I


开始截取,截取


7


个字符

Console.WriteLine(s1);       //

结果是


I enjoy

(9)判断字符串内是否含有某个字符。

Contains();

string s = “I like books,I enjoy eating books”; //

要检测的字符串

bool b = s.Contains(“like”);  //

判断字符串内是否含有

”like”这个字符串

Console.WriteLine(b);      //

执行结果返回


bool


类型的值


true

StartWith() //

判断字符串是否以某个字符串开头。

EndWith()//

判断字符串是否以某个字符串结尾。

(10)判断某个字符在字符串内第一次出现的位置。

IndexOf();

示例

string s = “I like books,I enjoy eating books”;

int index=s.IndexOf(“k”);  //

判断字母

”k”第一次出现的位置,返回

int


类型的结果

Console.WriteLine(index);




//


如果没出现该字符,则返回


-1


,执行结果是


10


———————- <a href=”


http://edu.csdn.net


“target=”blank”>ASP.Net+Android+IOS

开发

</a>




<a href=”


http://edu.csdn.net


“target=”blank”>.Net

培训

</a>

、期待与您交流!

———————-



版权声明:本文为guoguo_19900310原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。