第二章C#语言基础.doc_第1页
第二章C#语言基础.doc_第2页
第二章C#语言基础.doc_第3页
第二章C#语言基础.doc_第4页
第二章C#语言基础.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 C语言基础C是基于C语言系列的最新衍生语言,专门用于.Net的程序设计,也是C语言系列中第一个面向组件编程(Component Orient Language)语言,内置支持属性(Property)、方法(Method)和事件(Event)等,基本语法与风格与C语言类似。一、数据类型C支持CTS(Common Type System,公共类型系统),C中的任一数据类型都出自基类System的某一个子类,具有格式化、序列化以及类型转换等方法。C数据类型包括两类:一类是值类型,直接存储数据;另一类是引用类型,间接引用其他数据,可以取null值。以下是C中的数值值类型表:名 称CTS类型说 明取 值 范 围sbyteSystem.Sbyte8位有符号整数-128127shortSystem.Int1616位有符号整数-3276732768intSystem.Int3232位有符号整数-231231-1longSystem.Int6464位有符号整数-263263-1byteSystem.Byte8位无符号整数0255ushortSystem.Uint1616位无符号整数065535uintSystem.Uint3232位无符号整数0232-1ulongSystem.Uint6464位无符号整数0264-1floatSystem.Single32位单精度浮点数1.5E-453.4E38doubleSystem.Double64位双精度浮点数5.0E-3241.7E308decimalSystem.Decimal128位双精度浮点数1.0E-287.9E28charSystem.Uint1616位无符号整数065535boolSystem.Boolean逻辑布尔值True或FalseC中的转义字符与C语言完全一致。引用类型中最常用的是字符串类型string,例如,string c=”China”;二、常量常量又叫常数,用来存储在程序运行过程中取值不变的数据。常量通过关键字const声明,必须在声明时初始化,语法格式如下:public/private/protected/internal const 类型说明 常量名=常量值;例如,public const double pi=3.14; 参见eg2_01。三、变量变量用来存储在程序运行过程中取值可以改变的数据。1. 变量的命名C中的变量在命名时有以下3条规则:l 变量的首字符必须是字母、“_”或“”。l 从第二个字符开始可以是字母、“_”或数字。l 变量的名称不能与C关键字(保留字)重名。下表是C的77个关键字:abstractasbaseboolbreakbytecasecatchcharcheckedclassconstcontinuedecimaldefaultdelegatedodoubleelseenumeventexplicitexternfalsefinallyfixedfloatforforeachgotoifimplicitinintinterfaceinternalislocklongnamespacenewnullobjectoperatoroutoverrideparamsprivateprotectedpublicreadonlyrefreturnsbytesealedshortsizeofstackallocstaticstringstructswitchthisthrowtruetrytypeofuintulonguncheckedunsafeushortusingvirtualvolatilevoidwhile2. 变量的声明与赋值声明变量时需要指定变量的名称与类型,可以在声明的同时初始化数据,也可以在声明以后赋值。语法格式如下:public/private/protected/internal 类型说明 变量名=变量值;变量名=变量值;例如,public int i=0; i=1; 参见eg2_02。3. 类型转换类型转换通常发生在赋值运算中,当赋值运算符两边数据的类型不一致时,需要进行类型转换。由编译器自动完成的类型转化称为隐式转化;由类型转换代码完成的类型转化称为显式转换。 隐式转换有些情况下,例如将int类型的数据赋值给double类型的数据时,可以自动完成类型转换。下表是可以进行自动隐式转换的数据类型:源 类 型目 标 类 型sbyteshort, int, long, float, double, decimalbyteshort, ushort, int, uint, long, ulong, float, double, decimalshortint, long, float, double, decimalushortint, uint, long, ulong, float, double, decimalintlong, float, double, decimaluintlong, ulong, float, double, decimallongfloat, double, decimalulongfloat, double, decimalfloatdoublecharushort, int, uint, long, ulong, float, double, decimal 显示转换显示转化的语法格式是:(类型标识关键字)(表达式);可以使用的类型标识关键字有sbyte, byte, short, ushort, int, uint, long, ulong, float, double, decimal, char;例如,double d=3.5; int i; i=(int)d;需要注意的是,不能通过关键字string将数值转化为数字字符串,即如果string s; double d=3.5; 语句s=(string)d;是非法的。转换到字符串需要借助类型转换类Convert,下表是Convert类的常用方法:方法说明ToBase64CharArray将8位无符号整数数组的子集转换为Base64数字编码的Unicode字符数组的等价子集ToBase64String将8位无符号整数数组的值转换为Base64数字编码的等效string表示形式ToBoolean将数据转换为等效的布尔值ToByte将数据转换为8位无符号整数ToChar将数据转换为Unicode字符ToDateTime将数据转换为日期时间ToDecimal将数据转换为Decimal数值ToDouble将数据转换为双精度浮点型数值ToInt16将数据转换为16位有符号整数ToInt32将数据转换为32位有符号整数ToInt64将数据转换为64位有符号整数ToSbyte将数据转换为8位有符号整数ToSingle将数据转换为单精度浮点型数值ToString将数据转换为等效的字符串ToUInt16将数据转换为16位无符号整数ToUInt32将数据转换为32位无符号整数ToUInt64将数据转换为64位无符号整数四、运算符与表达式由运算符连接参与运算的数据组成表达式,这是程序设计过程中进行运算的基础。C的运算符的意义、运算的优先级与结合性和C语言一致。1. 算术运算包括加法(+)、减法(-)、乘法(*)、除法(/)、整除(/)、取余(%)、取负(-)。2. 关系运算包括大于()、大于或等于(=)、小于()、小于或等于(=)、等于(=)、不等于(!=)。3. 逻辑运算包括与(&)、或(|)、非(!)。4. 赋值运算包括基本赋值(=)和各种复合赋值(+=、-=、*=、/=、%=、&=、|=、=、=)。另外,自加运算(+)、自减运算(-)、条件运算(?:)等也和C语言一致。关于C的运算符与表达式参见eg2_03。五、字符串处理字符串类型string属于引用类型,一般不能使用上述运算符直接运算,需要借助string类的方法进行处理。1. CompareTo方法比较两个字符串是否相等,语法格式:string1.CompareTo(string2);根据string1和string2的比较结果返回1、0或-1,例如:string str1=”abc”;int m1=str1.CompareTo(“ab”);int m2=str1.CompareTo(“abc”);int m1=str1.CompareTo(“abcd”);代码运行后,m1的值为1、m2的值为0、m3的值为-1。2. Equals方法比较两个字符串是否相同,语法格式:string1.Equals(string2);根据string1和string2是否相同,返回True或False,例如string str1 = abc, str2 = abc, str3 = ABC;bool m = str1.Equals(str2), n = str1.Equals(str3);代码运行后,m的值为True、n的值False。3. Substring方法从指定的字符串中截取子串,语法格式:string.Substring(start,length);返回字符串string自第start个字符开始、长度为length个字符的子串,例如:string s1=”Hello World!”;string s2=s1.Substring(6,5);代码运行后,s2为”World”。4. Insert方法在一个字符串的指定位置插入另一个字符串,语法格式:string1.Insert(pos,string2);在字符串string1的第pos个字符处插入字符串string2,例如:string s1=”I am a student.”;string s2=s1.Insert(6,”good “);代码运行后,s2为”I am a good student.”。5. Remove方法在一个字符串的指定位置删除指定的字符串,语法格式:string1.Insert(pos,length);在字符串string1的第pos个字符处删除长度为length的字符串,例如:string s1=”I am a good student.”;string s2=s1.Remove(7,5);代码运行后,s2为”I am a student.”。6. Replace方法在一个字符串中将指定的子串替换为另一个子串,语法格式:string1.Replace(string2,string3);在string1中将子串string2替换为string3,例如:string s1=”I am a student.”string s2=s1.Replace(“student”,”teacher”);代码运行后,s2为”I am a teacher.”。7. PadLeft/PadRight方法在一个字符串的左侧/右侧填充指定的字符,语法格式:string. PadLeft/PadRight (length,char); 在字符串string的左侧/右侧填充字符,使字符串长度为length,第二个参数可以省略,表示填充空格字符,例如:string s=”Hello World!”;string s1=s.PadLeft(15,&);string s2=s.PadRight(15);代码运行后,s1为”&Hello World!”,s2为”Hello World! “。8. TrimStart/TrimEnd/Trim方法在一个字符串的起始/末尾/首尾删除指定的字符,语法格式:string. TrimStart/TrimEnd/Trim(Char );在字符串string的起始/末尾/首尾删除字符数组Char 中的字符,例如:string s=”*_*Hello World!*_*”;string s1=s.TrimStart(new Char *,_);string s2=s.TrimEnd(new Char *,_);string s3=s.Trim(new Char *,_);代码运行后,s1为”Hello World!*_*”,s2为”*_*Hello World!“,s3为”Hello World!”。9. Copy方法将一个字符串复制给另一个字符串,语法格式:String.Copy(str);str为被复制的字符串,例如:string s1=”Hello World!”;string s2=String.Copy(s1);代码运行后,s2为”Hello World!”。10. Split方法将一个字符串按照指定的字符分割成若干个子串,语法格式:str.Split(Char );将字符串str按照字符数组Char 中的字符分割成若干个子串,例如:string str=”Hello,World!”;string s=str.Split(new Char ,!);代码运行后,s0为”Hello”,s1为”World”。六、流程控制语句流程控制语句包括条件语句、循环语句和异常处理语句,C语言中的条件语句和循环语句可直接使用到C程序中。1. if语句if语句是一种最常用最基本的双分支条件语句,语法格式:if(表达式) /代码段1 else /代码段2 根据表达式的返回值为非零或零,执行代码段1或代码段2;if语句可以没有else分支,也可以以多种形式嵌套,参见eg2_04。2. switch语句switch语句是一种多分支定点判断语句,语法格式:switch(表达式) case 值1: /代码段1 break; case 值2: /代码段2 break; . . case 值n: /代码段n break; default: /代码段n+1 break; 根据表达式的值,从多个case分支中找到一个入口执行相应代码,则执行完毕该分支后跳出switch语句,default分支为所有取值不满足表达式时执行的分支语句,参见eg2_05。3. while语句while语句为典型的判断型循环语句,语法格式:while(表达式) /代码段 根据表达式的值为非零或零决定继续或跳出循环。4. do.while语句do.while语句也是与判断相关的循环语句,与while语句的区别是循环体至少执行一次,语法格式:do /代码段 while(表达式);先执行一次循环体,再根据表达式的值为非零或零决定继续或跳出循环。5. for语句for语句通过循环变量直接控制循环执行的次数,又称为步长型循环,语法格式:for(表达式1; 表达式2; 表达式3) /代码段 通常情况下,表达式1用以设置循环变量的初值,表达式2用以设置循环继续的条件,表达式3用以设置循环变量的步长。以上3种循环语句的具体使用参见eg2_06。6. foreach语句foreach语句提供了一种简单使用循环来遍历数组或集合元素的方法,语法格式:foreach(数据类型 变量名 in 数组名或集合名) /代码段 将数组或集合中的各个元素逐一提取作为变量,再执行循环体,参见eg2_07。7. try.catch.finally.语句该语句提供了一种最常用的异常处理代码,语法格式:try /代码段1 catch(System.*Exception) /代码段2 finally /代码段3 l try语句块:包含可能导致异常的受保护代码,该块一直执行到引发异常或成功完成为止。l catch语句块:捕获异常代码,并加以处理,需要设置System.*Exception参数(“*”表示某种异常类型)。l finally语句块:不论是否引发异常都会运行的语句块,与try语句块的退出方式无关,同时清除try语句块中分配的任何资源。参见eg2_08。七、数组C#的数组是从System.Array类派生而来的引用对象,可使用Array类的各种方法进行操作。通常用静态方式存储数组,即在数组的查找、遍历等各项操作中一般不改变其存储空间大小。1. 数组的定义与初始化一维数组定义与初始化的语法格式:类型标识 数组名=初始值列表; 例如:string arrStr=”Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”;二维数组定义与初始化的语法格式:类型标识 , 数组名=初始值列表; 例如:int , arrInt= 0, 1 , 2, 3 , 4, 5 , 6, 7 , 8, 9 ;编译器根据初始值的数量计算数组的长度并创建数组,如果需要设置数组的长度则须使用new运算创建对象,例如:string arrStr=new string7;int , arrInt=new int2,5;使用new运算创建对象的同时可以进行初始化,例如:string arrStr=new string7 ”Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”;int , arrInt=new int2,5 0, 1 , 2, 3 , 4, 5 , 6, 7 , 8, 9 ;此时,数组大小必须与初始值数量相匹配,否则会产生编译器错误。定义数组时可以不对其初始化,但以后对数组初始化时必须使用new运算,例如:str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论