第3章课程C#程序设计基础_第1页
第3章课程C#程序设计基础_第2页
第3章课程C#程序设计基础_第3页
第3章课程C#程序设计基础_第4页
第3章课程C#程序设计基础_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章课程C#程序设计基础3.1 标识符标识符 C#的标识符名称必须遵守以下规则:的标识符名称必须遵守以下规则:(1)所有的标识符只能由字母、数字和下划线这)所有的标识符只能由字母、数字和下划线这3类字符组成,类字符组成,且第一个字符必须为字母或下划线。且第一个字符必须为字母或下划线。(2)标识符中不能包含空格、标点符号、运算符等其他符号。)标识符中不能包含空格、标点符号、运算符等其他符号。(3)标识符严格区分大小写。)标识符严格区分大小写。(4)标识符不能与)标识符不能与C#关键字名相同。关键字名相同。(5)标识符不能与)标识符不能与C#中的类库名相同。中的类库名相同。 a12_c 1abc

2、 3.2 C#中数据类型中数据类型C#中数据类型分类中数据类型分类 3.2.1 值类型值类型 值类型的变量内含变量值本身,值类型的变量内含变量值本身,C#的值类型可以分为简单类的值类型可以分为简单类型、结构类型和枚举类型。下面仅介绍简单类型。型、结构类型和枚举类型。下面仅介绍简单类型。 1. 整数类型整数类型2. 实数类型实数类型3 字符类型字符类型 例如,可以采用如下方式字符变量赋值:例如,可以采用如下方式字符变量赋值: char c=H ; / 字符字符H char c=x0048; / 字符字符H,十六进制转义符(前缀为,十六进制转义符(前缀为x) char c=u0048; / 字符字

3、符H,Unicode表示形式(前缀为表示形式(前缀为u) char c=r; / 回车,转义字符回车,转义字符 在表示一个字符常数时,单引号内的有效字符数量必须且只能是一个,而且不在表示一个字符常数时,单引号内的有效字符数量必须且只能是一个,而且不能是单引号或者反斜杠(能是单引号或者反斜杠()。)。4. 布尔类型布尔类型 布尔类型数据用于表示逻辑真和逻辑假,布尔类型的类型标识布尔类型数据用于表示逻辑真和逻辑假,布尔类型的类型标识符是符是bool。 注意:在注意:在C#语言中,语言中,bool类型不能像类型不能像C+语言那样可能直语言那样可能直接转换为接转换为int类型,例如,类型,例如,int

4、 a=(23);在在C/C+中都是正确的,中都是正确的,但在但在C中不允许这样,会出现中不允许这样,会出现“无法将类型无法将类型bool隐式转换为隐式转换为int”的编译错误。的编译错误。3.2.2 引用类型引用类型引用类型也称为参考类型。和值类型相比,引用类型的引用类型也称为参考类型。和值类型相比,引用类型的变量不直接存储所包含的值,而是指向它所要存储的值。类变量不直接存储所包含的值,而是指向它所要存储的值。类似似C中的指针。中的指针。 1. object类类 object是是C#中所有类型(包括所有的值类型和引用类型)的基类,中所有类型(包括所有的值类型和引用类型)的基类,C#中的所有类型

5、都直接或间接地从中的所有类型都直接或间接地从object类中继承而来。因此,对一类中继承而来。因此,对一个个object的变量可以赋予任何类型的值。的变量可以赋予任何类型的值。 float f=1.23; object obj1; /定义定义obj1对象对象 obj1=f; object obj2=China;/定义定义obj2对象并赋初值对象并赋初值2. string类类 C#还定义了一个还定义了一个string类,表示一个类,表示一个Unicode字符序列,专门用于对字字符序列,专门用于对字符串的操作。同样,这个类也是在符串的操作。同样,这个类也是在.NET Framework的命名空间的

6、命名空间System中定义的,是类的别名。中定义的,是类的别名。字符串在实际中应用非常广泛,利用字符串在实际中应用非常广泛,利用string类中封装的各种内部操作,类中封装的各种内部操作,可以很容易完成对字符串处理。例如:可以很容易完成对字符串处理。例如: string str1=123+abc; /+运算符用于连接字符串运算符用于连接字符串 char c=Hello World!2; /运算符可以访问运算符可以访问string中的单个字符中的单个字符,c=e string str2=China; string str3=China; / 字符串的另一种表示形式,用字符串的另一种表示形式,用引

7、起来。引起来。 bool b=(str2=str3); /=运算符用于两个字符串比较,运算符用于两个字符串比较,b=true3.3 C#中的变量和常量中的变量和常量3.3.1 变量变量1. 变量定义变量定义 在在C#程序里使用某个变量之前,必须要告诉编译器它是一程序里使用某个变量之前,必须要告诉编译器它是一个什么样的变量,因此要对变量进行定义。定义变量的方法如个什么样的变量,因此要对变量进行定义。定义变量的方法如下:下: 访问修饰符访问修饰符 数据类型数据类型 变量名变量名 = 初始值初始值;例如:例如: string name=王华王华; int age=20;也可以同时声明一个或多个给定类

8、型的变量,例如:也可以同时声明一个或多个给定类型的变量,例如: int a=1,b=2,c=3; 定义一个变量,系统就会在内存中开辟相应大小的空间来存定义一个变量,系统就会在内存中开辟相应大小的空间来存放数据。可以从下面放数据。可以从下面4个层面来理解变量。个层面来理解变量。l 变量名称变量名称l 变量的值变量的值l 变量的数据类型变量的数据类型l 变量的作用域变量的作用域3.3.2 值类型变量和引用类型变量的区别值类型变量和引用类型变量的区别程序的内存空间分为栈空间和堆空间,值类型的数据在栈空程序的内存空间分为栈空间和堆空间,值类型的数据在栈空间中分配,而引用类型数据(对象)在堆空间中分配。

9、间中分配,而引用类型数据(对象)在堆空间中分配。程序的执行空间:程序的执行空间:栈空间栈空间堆空间堆空间1. 理解值类型的变量理解值类型的变量C#中的值类型变量和中的值类型变量和C/C+语言中的普通变量(非指针变量)相似,语言中的普通变量(非指针变量)相似,这类变量直接包含它们的值。这类变量直接包含它们的值。C#中在内存的栈空间中为值类型变量分配空间,而且没有单独中在内存的栈空间中为值类型变量分配空间,而且没有单独的堆分配或垃圾回收开销。因此值类型变量会随着方法调用后栈空间的堆分配或垃圾回收开销。因此值类型变量会随着方法调用后栈空间的消亡而自动清除(的消亡而自动清除(C#中的值类型变量像中的值

10、类型变量像C/C+语言中函数内的局部语言中函数内的局部变量,函数执行完后由系统释放其存储空间)。变量,函数执行完后由系统释放其存储空间)。例如:例如:int x;int y=2;x=y;2. 理解引用类型的变量理解引用类型的变量在在C/C+语言中可以定义指针变量,例如:语言中可以定义指针变量,例如:char *p;其中,其中,p是一个指针变量,其中存放某个字符变量的地址,注意变量是一个指针变量,其中存放某个字符变量的地址,注意变量p和它所指向的字符变量是两个不同的东西。和它所指向的字符变量是两个不同的东西。在在C#中没有指针,而改为引用,引用表示某个对象的地址中没有指针,而改为引用,引用表示某

11、个对象的地址而不是变量或对象本身。而不是变量或对象本身。C#中引用类型变量和其所指的对象的中引用类型变量和其所指的对象的关系,如同前面关系,如同前面C/C+语言中的变量语言中的变量p和它所指向的字符变量的和它所指向的字符变量的关系。关系。在在C#中,无论值类型变量还是引用类型变量,都是在栈空中,无论值类型变量还是引用类型变量,都是在栈空间中分配对应的存储空间,所不同的是,引用类型变量所指向间中分配对应的存储空间,所不同的是,引用类型变量所指向的对象是在托管堆上分配内存空间的,为什么这样呢?先看一的对象是在托管堆上分配内存空间的,为什么这样呢?先看一个简单的个简单的C/C+语言函数:语言函数:v

12、oid fun三三char *p;/定义指针变量定义指针变量pint i;/定义整型变量定义整型变量ip=(char *)malloc(10*sizeof(char);/为为p分配分配10个字符的个字符的空间空间for (i=0;ib ? a : b计算过程是,当计算过程是,当ab,max= a; 否则否则max=b。3.6.8 其他运算符其他运算符1. is运算符运算符is运算符用于检查表达式是否是指定的类型,如果是,其结果为运算符用于检查表达式是否是指定的类型,如果是,其结果为true,否则结果为否则结果为false。 2. sizeof运算符运算符sizeof运算符求值类型数据在内存中占

13、用的字节数。运算符求值类型数据在内存中占用的字节数。sizeof运算运算符的语法格式如下:符的语法格式如下:sizeof(类型标识符类型标识符)其结果为一个整数,表示指定类型的数据在内存分配的字节数。该运其结果为一个整数,表示指定类型的数据在内存分配的字节数。该运算符只能作用于值类型或值类型变量。算符只能作用于值类型或值类型变量。3. typeof运算符运算符该运算符用于获得指定数据类型的说明。例如,若声明了结构该运算符用于获得指定数据类型的说明。例如,若声明了结构Student,则以下语句输出声明,则以下语句输出声明Student结构类型的程序名等。结构类型的程序名等。Console.Wri

14、teLine(typeof(Student);4. new运算符运算符该运算符用于创建一个类的对象。该运算符用于创建一个类的对象。3.6.9 运算符的优先级运算符的优先级 运算符的优先级是指在表达式中哪一个运算符应该首先计算。运算符的优先级是指在表达式中哪一个运算符应该首先计算。 C#根据运算符的优先级确定表达式的求值顺序:优先级高的运算先做,根据运算符的优先级确定表达式的求值顺序:优先级高的运算先做,优先级低的操作后做,相同优先级的操作从左到右依次做,同时用小括优先级低的操作后做,相同优先级的操作从左到右依次做,同时用小括号控制运算顺序,任何在小括号内的运算最优先进行。号控制运算顺序,任何在

15、小括号内的运算最优先进行。 3.7 C#中常用类和结构中常用类和结构C#中一切都是对象中一切都是对象 。3.7.1 String类类 string类型是类型是.NET Framework中的中的String类的别名。类的别名。string类型定类型定义了相等运算符(义了相等运算符(=和和!=)用于比较两个)用于比较两个string对象,另外,对象,另外,+运算符运算符用于连接字符串,用于连接字符串,运算符可以用来访问运算符可以用来访问string中的各个字符。中的各个字符。 【例【例3.7】 设计一个控制台程序求用户输入的子串在主串中位置。设计一个控制台程序求用户输入的子串在主串中位置。usi

16、ng System;namespace Proj3_6 class Program static void Main(string args) String mstr,sstr; (输入主串输入主串:); mstr = 三三; (输入子串输入子串:); sstr = 三三; (主串长度主串长度=0,子串长度子串长度=1, , ); if (String.Compare(mstr, sstr) != 0) /使用静态方法使用静态方法 (位置位置:0, mstr.IndexOf(sstr); else (两个字符串相同两个字符串相同); 3.7.2 Math类类 Math类位于类位于System命

17、名空间中,它包含了实现命名空间中,它包含了实现C#中常用算术运中常用算术运算功能的方法,这些方法都是静态方法,可通过算功能的方法,这些方法都是静态方法,可通过“Math.方法名方法名(参参数数)”来使用。来使用。3.7.3 Convert类类Convert类位于类位于System命名空间中,用于将一个值类型转换命名空间中,用于将一个值类型转换成另一个值类型。这些方法都是静态方法,可通过成另一个值类型。这些方法都是静态方法,可通过“Convert.方方法名法名(参数参数)”来使用。来使用。3.7.4 DateTime结构结构 DateTime结构类位于结构类位于System命名空间中,命名空间中

18、,DateTime值类型值类型表示值范围在公元表示值范围在公元0001年年1月月1日午夜日午夜12:00:00到公元到公元9999年年12月月31日晚上日晚上11:59:59之间的日期和时间。之间的日期和时间。 可以通过以下语法格式定义一个日期时间变量:可以通过以下语法格式定义一个日期时间变量: DateTime 日期时间变量日期时间变量 = new DateTime(年年,月月,日日,时时,分分,秒秒);例如,以下语句定义了例如,以下语句定义了2个日期时间变量:个日期时间变量: DateTime d1 = new DateTime(202X,10,1); DateTime d2 = new DateTime(202X,10,1,8,15,20); 其中,其中,d1的值为的值为202X年年10月月1日零点零分零秒,日零点零分零秒,d2的值为的值为202X年年10月月1日日8点点15分分20秒。秒。【例【例3.8】 设计一个控制台程序说明设计一个控制台程序说明DataTime结构的使用。结构的使用。 using System;namespace Proj3_7 class Program static void Main(string

温馨提示

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

评论

0/150

提交评论