第3章+C_程序设计基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章C#程序设计基础数据类型、运算符和表达式是编程的基础。C#支持种类丰富的数据类型和运算符,这种特性使C#适用于广泛的编程范围。本章将介绍C#的基本语法,包括词法结构、数据类型、变量与常量、运算符和表达式等编程的基础知识。2C#程序设计实用教程3.1词法结构词法是构成程序设计语言的最基本单位。程序是由若干个语句构成,而语句是由若干个具有特殊含义的单词和运算符构成的。所以学习一门编程语言,首先应该从词法入手。3C#程序设计实用教程3.1.1标识符•标识符(identifier)是由程序开发人员为类型、方法、变量等所选择的名字。•C#的标识符应当使用字母或下划线作为开头,由字母、数字、下划线(“_”)和美元符号(“$”)组成,不能包括空格、标点符号和运算符,而且标识符的名称最好和实际的应用联系起来,这样可以使程序更容易理解,做到“见名知意”。•比如,用来表示售货员的标识符使用salesman比用people更容易理解。4C#程序设计实用教程3.1.1标识符•下面是合法的标识符:Sum,average,_total,Student_name,Lotus_1_2_3•下面是不合法的标识符:Abc-abc//中间使用了减号而非下划线3abc//以数字开头Abcabc//中间有空格class//使用关键字作为标识符5C#程序设计实用教程3.1.1标识符C#的标识符不能与关键字相同,但是可以使用“@”前缀来避免这种冲突。例如:@whilewhile上面两个标识符中,第一个标识符是合法的,而第二个标识符不是合法的,因为while是关键词。6C#程序设计实用教程3.1.1标识符C#的标识符区别大小写,例如下面的4个标识符是不同的:MembermemberMemBerMEMBER7C#程序设计实用教程3.1.2关键字同C和C++语言一样,C#也规定了很多关键字用于程序控制、数据说明或者其他功能,由于它们的特殊意义,所以这些关键字不能作为标识符使用。常用的关键词如表3-1所示。8C#程序设计实用教程3.2数据类型数据类型是用来定义现实生活中各种数据形式的标识符及其存储形式。C#中数据类型主要分为两大类:值类型和引用类型。在此,先讲解这两种类型,然后再讨论数据类型之间的转换。9C#程序设计实用教程3.2.1值类型•C#的值类型包括3种:简单类型、结构类型和枚举类型。•简单类型包括整数类型、浮点类型、小数类型、字符类型和布尔类型等。10C#程序设计实用教程3.2.1值类型•1.整数类型•整数类型的数据值只能是整数。数学上的整数可以从负无穷大到正无穷大,由于计算机存储单元的限制,程序语言提供的整数类型的值总是在一定的范围内。•C#定义了8种整数类型,划分的根据是这些类型所占存储器的位数。例如,一个8位的整数类型可以表示28=256个数值。11C#程序设计实用教程3.2.1值类型整数类型如表3-2所示。12C#程序设计实用教程3.2.1值类型2.浮点类型实数在C#中采用浮点类型的数据来表示。浮点类型的数据包括两种:单精度浮点型(float)和双精度浮点型(double),其区别在于取值范围和精度不同。13C#程序设计实用教程3.2.1值类型浮点类型数据的精度(小数点后所保留的有效数字)和取值范围如表3-3所示。14C#程序设计实用教程3.2.1值类型•3.小数类型•小数类型(decimal)数据是高精度的类型数据,占用16个字节,主要是为了满足需要高精度的财务和金融方面的计算。•小数类型数据的取值范围和精度如下:小数类型:取值范围在±1.0x10-28~7.9x1028之间,精度为29位数。要注意的是,小数类型数据的后面必须跟m或者M后缀来表示它是decimal类型的,如3.15m,0.35m等,否则就会被视为标准的浮点类型数据,导致数据类型不匹配。15C#程序设计实用教程3.2.1值类型提示:在C#中,可以通过给数值常数加后缀的方法来指定数值常数的类型,可以使用的数值常数后缀有以下几种:(1)u(或者U)后缀:加在整型常数后面,代表该常数是uint类型或者ulong类型。(2)l(或者L)后缀:加在整型常数后面,代表该常数是long类型或者ulong类型。(3)ul(或者uL、Ul、UL、lu、lU、LU)后缀:加在整型常数后面,代表该常数是ulong类型。16C#程序设计实用教程3.2.1值类型(4)f(或者F)后缀:加在任何一种数值常数后面,代表该常数是float类型。(5)d(或者D)后缀:加在任何一种数值常数后面,代表该常数是double类型。(6)m(或者M)后缀:加在任何一种数值常数后面,代表该常数是decimal类型。17C#程序设计实用教程3.2.1值类型示例如下:137f代表float类型的数值137.0137u代表uint类型的数值137137.2m代表decimal类型的数值137.2137.22d代表double类型的数值137.22137代表int类型的数值13718C#程序设计实用教程3.2.1值类型•4.字符类型•C#中的字符类型数据采用Unicode字符集。字符类型的类型标识符是char,因此也可称为char类型。•凡是在单引号中的一个字符,就构成一个字符常数,如下所示:'a'、'o'、'*'、'9'•在表示一个字符常数时,单引号内的有效字符必须有且只能有一个,并且不能是单引号或者反斜杠(\)等。•为了表示单引号和反斜杠等特殊的字符常数,提供了转义符,在需要表示这些特殊常数的地方,可以使用转义符来替代这些特殊的字符。常用的转义符如表3-4所示。19C#程序设计实用教程3.2.1值类型常用的转义符如表3-4所示。20C#程序设计实用教程3.2.1值类型5.布尔类型布尔类型数据用于表示逻辑真和逻辑假,布尔类型的类型标识符是bool。布尔类型常数只有两种值:true(代表“真”)和false(代表“假”)。21C#程序设计实用教程3.2.2引用类型•在C#中,引用类型的引入主要是因为值类型比较简单,不能描述结构复杂、抽象能力比较强的数据。•引用类型,其含义是该类型的变量不直接存储所包含的值,而是存储当前引用值的地址,因此引用类型数据的值会随所指向的值的不同而变化,同一个数据也可以有多个引用。•这与简单类型数据是不同的,简单类型数据存储的是自身的值,而引用类型存储的是将自身的值所直接指向到某个对象的值。它就像一面镜子一样,虽然从镜子可以看到物体,但物体并不在镜子中,只不过是物体的反射而已。22C#程序设计实用教程3.2.2引用类型C#的引用类型有4种:类类型、数组类型、接口类型和委托类型。类(class)是面向对象编程的基本单位。它是一种包含数据成员、函数成员的数据结构。类的数据成员有常量、域和事件,函数成员包括方法、属性、构造函数和析构函数等。下面将介绍经常用到的两个类:object(对象类型)和string(字符串类型)。23C#程序设计实用教程3.2.2引用类型•1.object类•在C#中,object类是系统提供的基类型,是所有类型的基类,所有的类型都直接或间接派生于对象类型。•因此,对于任何一个object变量,均可以赋给任何类型的值。intx1=10;objectobj1;obj1=x1;Objectobj2=string;•对于object类型的变量,声明时必须使用object关键字。24C#程序设计实用教程3.2.2引用类型2.string类在C#中,有一个用于操作字符串数据的string类,string类直接派生于object类,且它是被密封的,这意味着不能从其派生出类。一个字符串是被一对双引号所包含的一系列字符。例如,Helloworld!就是一个字符串。string类的用法十分简单:stringstr1=Hello,;stringstr2=China!“;25C#程序设计实用教程3.2.2引用类型•合并字符串也很简单:stringstr3=str1+str2;•如果想访问单个字符,所要做的就是访问下标:charc=str3[0];•当比较两个字符串是否相等时,简单地使用“==”比较操作符。if(str1==str2){...}26C#程序设计实用教程3.2.2引用类型C#支持以下两种形式的字符串常数。(1)常规字符串常数。放在双引号间的一串字符,就是一个常规字符串常数。如前面所示的,即为常规字符串常数。除了普通的字符,一个字符串常数也允许包含一个或多个转义符。例如在下例中,使用了\n和\t转义符。27C#程序设计实用教程3.2.2引用类型•【例3-1】在字符串中,转义符的应用示范。•程序代码如下:usingSystem;classStringDemo{staticvoidMain(){Console.WriteLine(Firstline\nSecondline);//使用\n转义符产生新的一行Console.WriteLine(A\tB\tC);//使用\t转义符排列输出Console.WriteLine(D\tE\tF);}}•程序运行的结果如图3-1所示。28C#程序设计实用教程3.2.2引用类型【例3-1】在字符串中,转义符的应用示范。程序运行的结果如图3-1所示。29C#程序设计实用教程3.2.2引用类型(2)逐字字符串常数。逐字字符串常数以“@”开头,后跟一对双引号,在双引号中放入字符。如:@中国人;@Helloworld!“;30C#程序设计实用教程3.2.2引用类型逐字字符串常数同常规字符串常数的区别在于,在逐字字符串常数的双引号中,每个字符都代表其原始的含义,在逐字字符串常数中不能使用转义字符。即,逐字字符串常数中双引号内的内容在被接受时是不变的,并且可以跨越多行。所以,在逐字字符串中,以“\”开始的字符被当作正常的字符处理,而不是转义符。但是要注意的是,如果要包含双引号(“),就必须在一行中使用两个双引号(”“)。31C#程序设计实用教程3.2.2引用类型•(2)逐字字符串常数。stringstr1=hello,China;//定义规则字符串常数:hello,Chinastringstr2=@“hello,China”;//定义逐字字符串常数:hello,Chinastringstr3=hello\tworld;//helloworldstringstr4=@hello\tworld;//hello\tworldstringstr5=Jacksaid\Hello\toyou;//JacksaidHellotoyoustringstr6=@JacksaidHellotoyou;//JacksaidHellotoyou32C#程序设计实用教程3.2.2引用类型简单来说,常规字符串要对字符串的转义序列进行解释,而逐字字符串除了对双引号进行解释之外,对其它字符,无需解释,用户定义成什么样,显示结果就是什么样。33C#程序设计实用教程3.2.2引用类型【例3-2】如何定义规则字符串和逐字字符串。程序代码如下所示:usingSystem;classStringDemo{staticvoidMain(){stringstr1=@oneline\\twoline\n\tthreeline;stringstr2=oneline\\twoline\n\tthreeline;Console.WriteLine(str1);Console.WriteLine(--------------);Console.WriteLine(str2);}}34C#程序设计实用教程3.2.2引用类型【例3-2】如何定义规则字符串和逐字字符串。程序的运行结果如图3-2所示。35C#程序设计实用教程3.2.3类型转换•数据类型在一定条件下是可以相互转换的,如将int类型数据转换成double类型数据。•在C#中,允许两种转换方式:隐式转换(

1 / 102
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功