C#语法基础.ppt
模块2-1Visual C#语法1usingSystem;namespacehelloclassClass1staticvoidMain(stringargs)Console.WriteLine(“Hello”);/*我的第一个我的第一个C#程序程序*/导入命名空间导入命名空间主方法主方法C#语句语句指定名字空间定义类关键字关键字2.12.1一个简单的一个简单的C#C#程序程序标识符标识符注释注释2关键字也叫关键字也叫保留字保留字,是对,是对C#有特定意义的有特定意义的字符串。关键字在字符串。关键字在Visual Studio 环境环境的代码视图中默认以的代码视图中默认以蓝色蓝色显示。显示。1、关键字、关键字32、标识符、标识符标识符(标识符(identifier)是一串字符,在程序中作为各种标识,是一串字符,在程序中作为各种标识,用来代表一个名字。用来代表一个名字。C#的标识符有如下规则:的标识符有如下规则:(1)一个合法的)一个合法的C#标识符,是由标识符,是由字母、数字、下字母、数字、下划线划线组成,但是第一个字符不能是数字组成,但是第一个字符不能是数字。(2)C#的标识符严格区分大小写。的标识符严格区分大小写。(3)不能是关键字。)不能是关键字。标标识识符符的的名名称称最最好好和和实实际际的的应应用用联联系系起起来来,这这样样可可以以使使程程序序更更容容易易理解,做到理解,做到“见名知意见名知意”。比比如如,用用来来表表示示售售货货员员的的标标识识符符使使用用salesman比比用用people更更容容易易理解。理解。标识符的第一个标识符的第一个字符不能为数字字符不能为数字4C#的标识符不能与关键字相同,但是可以使用“”前缀来避免这种冲突。例如:whilewhile5C#程序设计实用教程2、标识符、标识符53 3、.NET.NET的命名空间的命名空间usingusing 关键字关键字 允许在一个命名空间中使用另一个命名空间的类允许在一个命名空间中使用另一个命名空间的类 using System;如果在该例中没有导入该命名空间,则程序应该如果在该例中没有导入该命名空间,则程序应该写成:写成:System.Console.WriteLine(“Hello”);注:注:using 语句是惟一允许写在任何花括号语句是惟一允许写在任何花括号之外之外的语句,并且其后的语句,并且其后必须带有分号必须带有分号“;”一般在创一般在创建项目时,会自动生成需要的系统的命名空间,建项目时,会自动生成需要的系统的命名空间,但是如果需要某用户的命名空间,需要自己导入。但是如果需要某用户的命名空间,需要自己导入。6using语句使用示例语句使用示例/在这里引入命名空间在这里引入命名空间System中的所有名字,以便使用其中中的所有名字,以便使用其中/的的Console类进行输入输出。类进行输入输出。usingSystem;classProgramstaticvoidMain(stringargs)Console.WriteLine(“Helloworld!”);3 3、.NET.NET的命名空间的命名空间73 3、.NET.NET的命名空间的命名空间命名空间又称名空间或名字空间,它是组织应用程序的一种结构。使用命名空间是为了避免程序中类名的冲突。namespace关键字关键字定义命名空间的语法为:namespace name.name1type declarations任何一段代码都必须放在某一个命名空间内,以防止类名的冲突。83、类和方法C#中,必须用类类来组织程序的变量与方法。C#要求每个程序必须且只能有一个“Main”方法。“Main”方法必须放在某一个类中。“Main”方法是应用程序的入口。4、语句语句语句就是C#应用程序中执行操作的指令。C#中的语句必须用分号“;”结束。可以在一行中书写多条语句,也可以将一条语句书写在多行上。95、在C#中,括号“”和“”是一种范围标志,用于标识应用程序一段代码的开始与结束。6、缩进与空格缩进用于表示代码的结构层次,这在程序中不是必须的,但是缩进可以清晰地表示程序的结构层次。空格有两种作用,一种是语法要求,必须遵守,一种是为使语句不至于太拥挤。例如:int a=3;107、添加注释:A)“/”:单行注释 B)“/*/”:多行注释 C)/11/*导入导入.NET系统类库提供的命名空间系统类库提供的命名空间System*/using System;class Welcome /定义类定义类 static void Main()/*程序的入口。其中程序的入口。其中static 表示表示Main()方法是一个静态方法,方法是一个静态方法,void表示该方法表示该方法 没有返回值没有返回值*/Cosole.WriteLine(欢迎使用欢迎使用C#);/输出输出 欢迎使用欢迎使用C#128、注意:注意:严格区分大小写;严格区分大小写;大写大写“A”与小写与小写“a”对对C#来说,是两个不同的字符。来说,是两个不同的字符。例如下面的例如下面的4个标识符是不同的:个标识符是不同的:MembermemberMemBerMEMBER13练习练习:1以下标识符中,错误的是(以下标识符中,错误的是()A._b39B.x345C.6_321D.nAverage2以下标识符中,正确的是(以下标识符中,正确的是()A._nNameB.MainC.6bD.x5#142.3 C#的数据类型 C#数据类型数据类型值类型值类型引用类型引用类型简单类型简单类型结构类型结构类型枚举类型枚举类型类类型类类型数组类型数组类型字符串类型字符串类型接口类型接口类型委托类型委托类型整数类型整数类型实数类型实数类型字符类型字符类型布尔类型布尔类型152.3 C#基本数据类型基本数据类型-值类型值类型预定义类型定义字节数byte0255之间的整数1sbyte-128127之间的整数1short-3276832767之间的整数2ushort065535之间的整数2int-21474836482147483647之间的整数4uint04294967295之间的整数4long-9223372036854775808 9223372036854775807之间的整数8ulong0188446744073709551615之间的整数81、整数类型、整数类型162.3 C#基本数据类型基本数据类型-值类型值类型2、实数类型、实数类型 类型名类型名说说 明明数据范围数据范围字节数字节数实数类型实数类型floatfloat单精度单精度浮点数浮点数1.5101.510-45-453.4103.41038384 4doubledouble双精度双精度浮点数浮点数5.0105.010-324-324.710.7103083088 8decimadecimal l精精确确的的十十进进制制数数有有2828位位有有效效数字数字1.5101.510-28-283.4103.41028281212精度为7位数精度可达15到16位方便我们在金融和货币方面的计算 172.3 C#基本数据类型基本数据类型-值类型值类型 数值常量后缀类别后缀说 明整数类型U无符号L长整型UL无符号长整型实数类型F单精度浮点数D双精度浮点数M精确的十进制数例如:long l=278L;float f=2.6F;decimal d_value=2.0M;注:如果不加后缀,注:如果不加后缀,整型默认整型默认int类型;类型;实数默认实数默认double类型类型183 3、字符类型、字符类型 字符类型的类型标识符是字符类型的类型标识符是char,采用采用Unicode字符集,字符集,为为双字节型,它的数据可以占有双字节型,它的数据可以占有2个字节个字节,可表示可表示 65536 种不同的字符,这样就可以直接在一个种不同的字符,这样就可以直接在一个 char 型型变量中存储一个汉字。变量中存储一个汉字。凡是在单引号中的凡是在单引号中的一个一个字符,就是一个字符常数,字符,就是一个字符常数,如:如:你你、A、?、6、2 为为了了表表示示单单引引号号和和反反斜斜杠杠等等特特殊殊的的字字符符常常数数,C#提提供供了了转义字符转义字符。表表2.12.1列出了列出了C#C#的转义字符:的转义字符:2.3 C#基本数据类型基本数据类型-值类型值类型可以适用于可以适用于所有已知的所有已知的编码编码192.1 C#2.1 C#的转义字符。的转义字符。2.3 C#基本数据类型基本数据类型-值类型值类型转义字符转义字符意义意义1 1个单引号个单引号1 1个双引号个双引号1 1个反斜杠个反斜杠001 1个空字符(注意不表示字符串结束)个空字符(注意不表示字符串结束)aa警报符警报符bb退格退格ff换页换页nn换行换行rr回车回车tt水平制表位水平制表位vv垂直制表位垂直制表位202.3 C#基本数据类型基本数据类型-值类型值类型例如字符串常量“c:windowssystem32”的真正含义是路径c:windowssystem32。C#可以用反转符去掉反斜杠的转义,如上也可以写成:“c:windowssystem32”212.3 C#基本数据类型基本数据类型-值类型值类型4、布尔类型、布尔类型 布尔类型是用来表示布尔类型是用来表示“真真”和和“假假”这两这两个概念的,在个概念的,在C#中,分别采用中,分别采用true和和false两两个值来表示。个值来表示。注意:注意:true值不能被其他任何非零值所代替。值不能被其他任何非零值所代替。只能如下写法:只能如下写法:bool x=true;或或 x=false;22 该类型的变量不直接存储所包含的值,而是指向它该类型的变量不直接存储所包含的值,而是指向它所要存储的所要存储的值的地址值的地址。在在C#C#中提供以下引用类型:中提供以下引用类型:l l对象类型对象类型l l类类型类类型l l接口接口l l代表元(委托)代表元(委托)l l字符串类型字符串类型l l数组数组2.3 C#基本数据类型基本数据类型-引用类型引用类型231、对象类型(、对象类型(object)对对象象类类型型是是所所有有类类型型之之母母它它是是其其他他类类型型最最根本的基类,可把任何类型的值赋给它。例如:根本的基类,可把任何类型的值赋给它。例如:objectobject theObjtheObj=123;=123;objectobject theObjctheObjc=a;=a;Object Object theObjdtheObjd=12.3;=12.3;2.2 C#的数据类型-引用类型引用类型 242.2 C#的数据类型-引用类型引用类型 2、字符串类型、字符串类型(string)一个字符串是被双引号包含的一系列字符。一个字符串是被双引号包含的一系列字符。string类是专门用于对字符串进行操作的。类是专门用于对字符串进行操作的。string str1=中国,;中国,;string str2=你好!;你好!;string str3=str1+str2;/这相当于这相当于str3=中国,你好!中国,你好!char c=str30;/取出取出str3的第一个字符,即的第一个字符,即“中中”字。字。25字节数少的类型字节数少的类型-字节数多的类型(字节数多的类型(隐式转换隐式转换)例如:例如:intint a=10;a=10;double d=3.5;double d=3.5;d=a;d=a;a=d;a=d;2.4 数据类型转换正确正确错误错误1、值类型、值类型26但字节数多的类型但字节数多的类型-字节数少的类型(字节数少的类型(显式转换显式转换)例如:例如:a=(a=(int)dint)d;强制类型转换强制类型转换正确正确27C#中的字符型与整型之间不能自动转换。以下语句在C#中不合法:char c=13;不过用户依旧可以将一个整型数显式地转换为一个字符数据类型,然后赋值给字符变量。如下:char c=(char)13;注意:注意:boolbool类型与数字类型之间不能转换,即使强制类类型与数字类型之间不能转换,即使强制类型转换也不行。型转换也不行。282 2、引用类型、引用类型装箱和拆箱:装箱和拆箱:装箱和拆箱概念是装箱和拆箱概念是C#类型系统的核心,它可类型系统的核心,它可以完成以完成值类型值类型和和引用类型引用类型之间的之间的转换转换。装箱装箱:是指将一个是指将一个值值类型类型隐式隐式地转换地转换成一个成一个object类型,类型,或者把这个值类型转换成一个被该值类型应用的或者把这个值类型转换成一个被该值类型应用的接口类型接口类型。值类型值类型Object类型类型(接口类型接口类型)隐式隐式2.4 数据类型转换29对象类型对象类型(object)装箱过程分两步:装箱过程分两步:1.1.首先首先创建创建一个一个objectobject实例实例;2.2.然后将这个值类型的然后将这个值类型的值复制到值复制到这个这个objectobject实例中实例中。如:如:int k=10;object obj=k;也可用也可用显式的方法显式的方法进行装箱操作:进行装箱操作:object obj=(object)k;2.4 数据类型转换30例例2_6:在程序中执行装箱转换。:在程序中执行装箱转换。class Program static void Main(string args)Console.WriteLine(执行装箱转换:执行装箱转换:);int k=200;object obj=k;k=300;Console.WriteLine(obj=0,obj);Console.WriteLine(k=0,k);2.4 数据类型转换31拆箱:拆箱:和装箱转换正好相反,拆箱转换是指和装箱转换正好相反,拆箱转换是指将一个将一个对象对象类型类型显式显式地转换成一个地转换成一个值类型值类型,或是将一个,或是将一个接口接口类型类型显式显式地转换成一个执行该接口的地转换成一个执行该接口的值类型值类型。Object类型类型(接口类型接口类型)值类型值类型显式显式2.4 数据类型转换32对象类型对象类型(object)拆箱的过程分为两步:拆箱的过程分为两步:1.首先,首先,检查检查这个对象实例,看它这个对象实例,看它是否为给定的值类型的是否为给定的值类型的装箱值装箱值2.然后,把这个实例的值然后,把这个实例的值拷贝拷贝给值类型的变量。如:给值类型的变量。如:int k=10;object obj=k;int j=(int)obj;2.4 数据类型转换33装箱和拆箱装箱和拆箱 int value=130;object o=value;Console.WriteLine(“对象的值=0,o);int value=130;object o=value;int number=(int)o;Console.WriteLine(num:0,number);值类型引用类型拆箱装箱值类型引用类型值类型注注:被装过箱的对象才能被拆箱34例例2_7:在程序中使用拆箱转换。:在程序中使用拆箱转换。class Program static void Main(string args)int k=228;object obj=k;/装箱转换装箱转换 int j=(int)obj;/拆箱转换拆箱转换 Console.WriteLine(k=0tobj=1tj=2,k,obj,j);该程序执行后,输出结果如下:该程序执行后,输出结果如下:k=228obj=228j=22835变量变量变量是程序运行过程中用于存放数据的变量是程序运行过程中用于存放数据的存储单元存储单元。变量的值在程序的运行过程中可以改变。变量的值在程序的运行过程中可以改变。1、变量的定义变量必须先定义后使用,定义的格式是:变量必须先定义后使用,定义的格式是:类型名类型名 变量名变量名1 1,变量名,变量名22;2.5 变量和常量 注意:注意:C#的标识符要严格区分大小写。的标识符要严格区分大小写。362变量的赋值变量的赋值变变量量的的赋赋值值,就就是是将将数数据据保保存存到到变变量量所所代代表表的的存存储储单单元中的过程。元中的过程。格式:格式:变量名变量名=表达式;表达式;2.5 变量和常量 373 3、变量的初始化、变量的初始化定定义义变变量量时时可可以以一一并并用用“=”=”赋赋值值,称称为为变变量量的的初初始化。始化。例如:例如:intint a=10;a=10;2.5 变量和常量 38常量定义:常量定义:在在C#中,常量在程序的运行过程中其值是中,常量在程序的运行过程中其值是不能改变不能改变的,的,例如,数字例如,数字100就是一个常量,这样的常量一般被称作就是一个常量,这样的常量一般被称作常数常数。符号常量使用符号常量使用const关键字定义,格式为:关键字定义,格式为:const 类型名称类型名称 常量名常量名=常量表达式常量表达式;例如:例如:const double pi=3.1415926;double area,vol,r;r=15;area=pi*r*r;注意:常量一旦赋值,只能使用,不能再赋值注意:常量一旦赋值,只能使用,不能再赋值2.5 变量和常量 392.6运算符和表达式运算符和表达式运算符和表达式Result=number*10变量变量变量变量常量常量操作数表达式操作数和运算符的组合运算符401.1.算术运算符与算术表达式算术运算符与算术表达式 算术运算符有一元运算符与二元运算符。一元运算符:一元运算符:-(取负)、(取负)、+(取正)、(取正)、+(增量)、(增量)、-(减量)。(减量)。二元运算符:二元运算符:+(加)、(加)、-(减)、(减)、*(乘)、(乘)、/(除)、(除)、%(求余)。(求余)。例如:例如:7.5%1.5结果为结果为0 37/2 结果为结果为18 37/2.0结果为结果为18.5 由算术运算符与操作数构成的表达式叫由算术运算符与操作数构成的表达式叫算术表达式算术表达式。既可以放在操作数既可以放在操作数左边,也可以放在左边,也可以放在操作数右边,表示操作数右边,表示操作数增操作数增1或减或减1只能放在左边不仅支持整型不仅支持整型数值,还支持数值,还支持实型数值实型数值要注意不同的数据类型2.6运算符和表达式运算符和表达式412.2.字符串运算符与字符串表达式字符串运算符与字符串表达式 字符串运算符只有一个,即字符串运算符只有一个,即“+”运算符,表运算符,表示将两个字符串连接起来。例如:示将两个字符串连接起来。例如:string connec=abcd+ef;注:在注:在C#中,允许将字符串与数值型数据进行连中,允许将字符串与数值型数据进行连接,连接时,接,连接时,数值数值类型数据被类型数据被隐式隐式的转换成的转换成字字符串符串。例如:例如:”2”+10的结果为的结果为“210”2.6运算符和表达式运算符和表达式422.6运算符和表达式运算符和表达式3.3.赋值运算符与赋值表达式赋值运算符与赋值表达式简单常用的为简单常用的为“=”复合赋值运算符,如复合赋值运算符,如“*=”、“/=”、“%=”、“+=”、“-=”等等例如:例如:i+=j;/i+=j;/等价为等价为i=i=i+ji+j;434.4.关系运算符与关系表达式关系运算符与关系表达式,=,8?15+a:39”,由由于于68的的值为值为false,所以整个表达式的,所以整个表达式的值是值是39。46当表达式包含多个运算符时,运算符的优先级控制各运算符的计算顺序当表达式包含多个运算符时,运算符的优先级控制各运算符的计算顺序除了除了赋值赋值运算符外,所有的二元运算都是从运算符外,所有的二元运算都是从左向右左向右执行运算。执行运算。类别类别运算符运算符一元一元+-!+x -x (T)x+-!+x -x (T)x乘除求余运算符乘除求余运算符*/%/%加减运算符加减运算符+-+-关系运算符关系运算符 =相等相等=!=!=逻辑逻辑 ANDAND&逻辑逻辑 XORXOR 逻辑逻辑 OROR|逻辑逻辑 ANDAND&逻辑逻辑 OROR|条件条件?:?:赋值赋值=*=/=%=+=-=&=|=*=/=%=+=-=&=|=算术算术关系关系逻辑逻辑条件条件赋值赋值为了使表达式按为了使表达式按正确的顺序运行,正确的顺序运行,可以添加小括号可以添加小括号2.6运算符和表达式运算符和表达式47