1、 本章将以第一个本章将以第一个C#C#程序程序“HelloWorldHelloWorld”为例,向读者演示为例,向读者演示C#C#应用程序的代码组成和应用程序的代码组成和编译过程,然后以开发一个真实的编译过程,然后以开发一个真实的“学生信学生信息管理系统息管理系统”为背景,详细讲述数据类型、为背景,详细讲述数据类型、常量、变量等常量、变量等C#C#语言基础知识。语言基础知识。章节内容章节内容3.1 引言引言3.2 编写第一个编写第一个C#程序程序3.3 数据类型数据类型3.4 常用类型常用类型3.5 常量和变量常量和变量3.6 小结小结 3.1 引言引言计算机中的高级语言(如计算机中的高级语言
2、(如C#、C+等)和现实世等)和现实世界中的人类语言(如汉语、英语等)有很多相似界中的人类语言(如汉语、英语等)有很多相似之处:之处:(1)人类语言中的组成元素有单词、短语、句子、段)人类语言中的组成元素有单词、短语、句子、段落和文章,在计算机高级语言中相对应有常量与变量、落和文章,在计算机高级语言中相对应有常量与变量、表达式、语句、函数和程序。表达式、语句、函数和程序。(2)人类语言中的单词、短语和句子有不同的性质,)人类语言中的单词、短语和句子有不同的性质,如形容词、动词短语、感叹句等,计算机高级语言中的如形容词、动词短语、感叹句等,计算机高级语言中的常量、变量、表达式也有不同的数据类型,
3、如整型常量、常量、变量、表达式也有不同的数据类型,如整型常量、浮点型变量、字符类型表达式等。浮点型变量、字符类型表达式等。了解这些相似之处,对理解和掌握计算机高级语了解这些相似之处,对理解和掌握计算机高级语言会有启发和帮助。言会有启发和帮助。3.2 编写第一个编写第一个C#程序程序 C#应用程序的常用类型主要有应用程序的常用类型主要有3种,分别为控制台应用程种,分别为控制台应用程序、序、Windows窗体应用程序和窗体应用程序和Web应用程序,具体特点应用程序,具体特点分别如下。分别如下。(1)控制台应用程序是没有窗口的应用程序,通过键盘)控制台应用程序是没有窗口的应用程序,通过键盘以输入命令
4、行的形式操作程序。先前的以输入命令行的形式操作程序。先前的DOS程序大都是这程序大都是这种类型程序,现在一般用作后台服务。种类型程序,现在一般用作后台服务。(2)Windows窗体应用程序是有窗口的应用程序,主要窗体应用程序是有窗口的应用程序,主要通过鼠标进行操作。因其图形化操作和界面直观等优点,通过鼠标进行操作。因其图形化操作和界面直观等优点,非常受欢迎,当前大多数应用程序都是这种类型。非常受欢迎,当前大多数应用程序都是这种类型。(3)Web应用程序其实就是将应用程序其实就是将Windows窗体应用程序以窗体应用程序以网页的形式表现出来,是网页的形式表现出来,是Web网站与传统应用程序的结合
5、网站与传统应用程序的结合体。这种类型的应用程序越来越多,有着广泛的应用前景,体。这种类型的应用程序越来越多,有着广泛的应用前景,例如网上办公和网上购物系统,都是这种类型的应用程序。例如网上办公和网上购物系统,都是这种类型的应用程序。3.2 编写第一个编写第一个C#程序程序控制台应用程序比较简单,通常作为初学控制台应用程序比较简单,通常作为初学者学习的第一种程序类型,用来熟悉最基者学习的第一种程序类型,用来熟悉最基本的语法知识。本节介绍如何在本的语法知识。本节介绍如何在Visual Studio2008下创建下创建C#控制台应用程序控制台应用程序“HelloWorld”。3.2.1 代码结构代码
6、结构创建第一个创建第一个“HelloWorld”控制台应用程序步骤:控制台应用程序步骤:打开打开Visual Studio 2008,在菜单栏中单击,在菜单栏中单击【文件文件】|【新建新建】|【项目项目】命令,弹出命令,弹出【新建项目新建项目】窗口。此窗口。此窗口列出了窗口列出了Visual C#能够创建的应用程序类型,选择能够创建的应用程序类型,选择“控制台应用程序控制台应用程序”作为项目类型,并将应用程序的作为项目类型,并将应用程序的名称更改为名称更改为“HelloWorld”,单击,单击【确定确定】按钮,如按钮,如图图3-1所示。所示。新建新建“HelloWorld”项目项目 代码演示代
7、码演示using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace HelloWorld class Program static void Main(string args)Console.WriteLine(Hello World!);Console.ReadLine();命名空间命名空间类类入口函数入口函数3.2.1 代码结构代码结构C#程序由命名空间(程序由命名空间(namespace)、类()、类(class)和程序入口函数(和程序入口函数(Main函数)组成。函
8、数)组成。命名空间是类的逻辑组合。命名空间和类的关系命名空间是类的逻辑组合。命名空间和类的关系可以理解为文件夹和文件的关系。使用命名空间可以理解为文件夹和文件的关系。使用命名空间使得类之间更具有组织性,且避免了类的命名冲使得类之间更具有组织性,且避免了类的命名冲突问题。突问题。如果要创建一个类,要使用如果要创建一个类,要使用namespace给出命名给出命名空间的名称空间的名称;如果使用类,要使用如果使用类,要使用using关键字指关键字指定该类所属的命名空间,或给出类的定该类所属的命名空间,或给出类的“绝对路绝对路径径”,即,即“命名空间名类名命名空间名类名”;如果要使用同;如果要使用同一个
9、命名空间的类,则不需要使用一个命名空间的类,则不需要使用using来引用来引用命名空间。命名空间。3.2.1 代码结构代码结构类即一组属性和方法的集合。类即一组属性和方法的集合。C#使用类来使用类来搭建整个应用程序,没有全局函数和全局搭建整个应用程序,没有全局函数和全局变量,这也体现了面向对象的程序设计思变量,这也体现了面向对象的程序设计思想。想。Main函数是函数是C#应用程序的入口,即应用程序的入口,即C#应用应用程序执行的第一个函数。程序执行的第一个函数。C#程序由多个类程序由多个类搭建而成,入口就是搭建而成,入口就是Main函数。一个应用函数。一个应用程序中必须有一个程序中必须有一个M
10、ain函数且只能有一个函数且只能有一个类包含类包含Main函数,并要求函数,并要求“Main”的首字的首字母大写。母大写。3.2.2 编译运行编译运行编译过程:编译过程:.cs文件文件-.exe可执行程序。可执行程序。对于对于Visual Studio 2008开发平台下的开发平台下的C#应用程序,可单击工具栏中的启动按钮或应用程序,可单击工具栏中的启动按钮或按按【F5】键(按键(按【F5】键进入调试模式,键进入调试模式,按按【Ctrl】+【F5】组合键进入非调试模式)组合键进入非调试模式)来编译运行。来编译运行。程序运行界面程序运行界面运行按钮运行按钮代码分析代码分析using System
11、;表明该程序要使用表明该程序要使用System命名空间下的类,因此用命名空间下的类,因此用using来指明引用的命名空间。如果不指明命名空间,来指明引用的命名空间。如果不指明命名空间,就使用该空间下的类,会出现编译错误。就使用该空间下的类,会出现编译错误。namespace HelloWorld表明该程序使用表明该程序使用namespace关键词声明了一个命名空关键词声明了一个命名空间间HelloWorld,如果其他类要调用该命名空间下定义,如果其他类要调用该命名空间下定义的类,需要使用的类,需要使用using关键词,即关键词,即using HelloWorld。class Program表明
12、该程序使用表明该程序使用class关键词定义了一个类关键词定义了一个类Program,该类属于命名空间该类属于命名空间HelloWorld 代码分析代码分析static void Main(string args)声明了声明了Main函数,函数,static是修饰符(其作用将在后续是修饰符(其作用将在后续章节详细介绍),章节详细介绍),void表明表明Main函数没有返回值,函数没有返回值,string args是参数列表。是参数列表。Console.WriteLine(Hello World!);使用命名空间使用命名空间System里的里的Console类中的类中的WriteLine函数输出
13、字符串函数输出字符串“Hello World”。如果程序头未引用。如果程序头未引用System命名空间,须使用命名空间,须使用System.Console.WriteLine全称。全称。Console.ReadLine();调用命名空间调用命名空间System中中Console类中的类中的ReadLine函函数,该函数等待键盘输入,按数,该函数等待键盘输入,按【Enter】键结束等待。键结束等待。3.3 数据类型数据类型当学习某一门人类语言时,例如汉语中的当学习某一门人类语言时,例如汉语中的词组,会发现汉语中的词语有名词和动词词组,会发现汉语中的词语有名词和动词等分类,这称为词性。计算机高级语
14、言的等分类,这称为词性。计算机高级语言的数据有整型和浮点型等,这叫做数据类型。数据有整型和浮点型等,这叫做数据类型。数据类型的作用:数据类型的作用:编译器可根据数据类型判断它们是否可以参加编译器可根据数据类型判断它们是否可以参加某种运算,从而帮助开发人员减少语法错误。某种运算,从而帮助开发人员减少语法错误。不同的数据类型,在内存中所占字节数不同,不同的数据类型,在内存中所占字节数不同,如果要处理的数据量非常大,选择适合的数据如果要处理的数据量非常大,选择适合的数据类型能够在很大程度上节省内存空间。类型能够在很大程度上节省内存空间。C#数据类型图数据类型图3.3 数据类型数据类型值类型和引用类型
15、是值类型和引用类型是C#中两种主要的数据中两种主要的数据类型;类型;var类型为类型为C#3.5新增类型,详细介绍参见新增类型,详细介绍参见第第13章。章。指针类型仅可用于指针类型仅可用于unsafe模式,用法类似模式,用法类似C+中的指针,这里不再赘述。(中的指针,这里不再赘述。(unsafe模式引用非模式引用非.net DLL提供的如提供的如C编写的编写的外部函数,需要指针来传递该函数外部函数,需要指针来传递该函数,优点,优点是可以调用其他是可以调用其他dll的函数,提高了兼容性的函数,提高了兼容性;缺点是容易内存泄漏)缺点是容易内存泄漏)数据类型划分依据数据类型划分依据C#数据类型按照数
16、据的存储模型分为值类型、引数据类型按照数据的存储模型分为值类型、引用类型、指针类型和用类型、指针类型和var类型类型。数据的存储模型指的是数据在内存中的保存方式。数据的存储模型指的是数据在内存中的保存方式。内存中有两个区域可以存放数据,一个是栈区,内存中有两个区域可以存放数据,一个是栈区,另外一个是堆区。栈区存放是编译期间就分配好另外一个是堆区。栈区存放是编译期间就分配好的内存空间,不会动态增长;堆区是程序运行期的内存空间,不会动态增长;堆区是程序运行期间动态分配的内存空间。因此存储在栈中的数据间动态分配的内存空间。因此存储在栈中的数据长度通常较小且固定,存储在堆中的数据可以动长度通常较小且固
17、定,存储在堆中的数据可以动态增长且所需空间通常较大。态增长且所需空间通常较大。值类型的数据存储所需空间通常较小,使用栈区值类型的数据存储所需空间通常较小,使用栈区的内存,而引用类型的数据所需空间较大,使用的内存,而引用类型的数据所需空间较大,使用堆区的内存。堆区的内存。3.4 常用类型常用类型3.4.1 整型整型3.4.2 浮点型浮点型3.4.3 decimal类型类型3.4.4 布尔型布尔型3.4.5 结构体类型结构体类型3.4.6 枚举类型枚举类型3.4.7 string类型类型3.4.8 Object类型类型3.4.9 数据类型的转换数据类型的转换3.4.1 整型整型整型就是整数类型,整
18、型就是整数类型,C#整型共有整型共有9种数据类型种数据类型。类型数值范围特征sbyte-128127有符号8位整数byte0255无符号8位整数charU+0000U+ffff16位Unicode字符short-32,76832,767有符号16位整数ushort065,535无符号16位整数int-2,147,483,6482,147,483,647有符号32位整数uint04,294,967,295无符号32位整数long-9,223,372,036,854,775,8089,223,372,036,854,775,807有符号64位整数ulong018,446,744,073,709,5
19、51,615无符号64位整数3.4.1 整型整型注意:注意:有符号指的是第一位二进制数表示符号,有符号指的是第一位二进制数表示符号,0代表正数,代表正数,1代表负数;无符号指的是所有的位数都用来表示数值,代表负数;无符号指的是所有的位数都用来表示数值,没有符号位,均为正数。例如,没有符号位,均为正数。例如,sbyte是一个有符号是一个有符号8位二进制数,第一位用来表示符号,因此位二进制数,第一位用来表示符号,因此sbyte表示的表示的范围为范围为-128-127;byte是一个无符号是一个无符号8位二进制数,位二进制数,8位全用来表示数值,表示范围为位全用来表示数值,表示范围为0-255,其他
20、类型可以,其他类型可以依此类推。依此类推。char类型也是一种整型,常用来表示字符,由类型也是一种整型,常用来表示字符,由16位二位二进制数组成,表示范围为进制数组成,表示范围为0-65535,代表世界上大多数,代表世界上大多数书面语言符号。这种字符又称为书面语言符号。这种字符又称为Unicode字符,在使字符,在使用时可以写成字符、十六进制和用时可以写成字符、十六进制和unicode字符,例如字字符,例如字符符A可以表示为可以表示为A、x0041和和u0041。使用整型使用整型 byte age=18;char sex=男男;long StudentNumber=200745054489;注
21、意,注意,char类型一次只能赋值一个字符,类型一次只能赋值一个字符,不能赋值两个字符,例如不能赋值两个字符,例如男生男生。注意整型溢出,注意整型溢出,byte age=300,产生溢,产生溢出错误。出错误。3.4.1 整型整型对于等号右边的整数常数,对于等号右边的整数常数,C#会按照默认的方式来判断会按照默认的方式来判断所属类型,即按照一定的顺序判断整数的类型,即所属类型,即按照一定的顺序判断整数的类型,即int、uint、long、ulong。如果不希望如果不希望C#使用上述默认的方式来判断一个整数数值使用上述默认的方式来判断一个整数数值常数的类型,可以通过添加后缀来指定整数常数的类型。常
22、数的类型,可以通过添加后缀来指定整数常数的类型。u(或者(或者U)后缀:加在整数常数后面,代表该常数是)后缀:加在整数常数后面,代表该常数是uint类型类型或者或者ulong类型。具体类型由常数的实际值决定。类型。具体类型由常数的实际值决定。C#优先匹配优先匹配uint类型。类型。l(或者(或者L)后缀:加在整数常数后面,代表该常数是)后缀:加在整数常数后面,代表该常数是long类型类型或者或者ulong类型。具体类型由常数的实际值决定。类型。具体类型由常数的实际值决定。C#优先匹配优先匹配long类型。类型。ul后缀:加在整型常数后面,代表该常数是后缀:加在整型常数后面,代表该常数是ulon
23、g类型。类型。例如:例如:uint age=18U;long StudentNumber=200745054489L;对于不可打印字符,对于不可打印字符,例如回车符、换行符例如回车符、换行符等,则需要采用转义等,则需要采用转义符。符。char c=a;Console.WriteLine(c);Console.WriteLine(abcn)转义符字符十六进制表示单引号0 x0027双引号0 x0022反斜杠0 x005C0空字符0 x0000a发出一声响铃0 x0007b退格0 x0008n换行0 x000Ar回车0 x000Df换页符0 x000Ct水平制表符0 x0009v垂直制表符0 x0
24、00B3.4.1 整型整型3.4.2 浮点型浮点型在日常生活中,像学生成绩,要用小数表示。在在日常生活中,像学生成绩,要用小数表示。在C#中使用浮点型表示小数,浮点就是指小数点中使用浮点型表示小数,浮点就是指小数点。C#语言中有两种小数类型,分别为语言中有两种小数类型,分别为32位单精度浮位单精度浮点型点型float和和64位双精度浮点型位双精度浮点型double。精度指的。精度指的是小数位数,小数位数越多,精度越高,小数位是小数位数,小数位数越多,精度越高,小数位数越少,精度越低。数越少,精度越低。float类型中小数位数为类型中小数位数为7位,即可精确到小数点位,即可精确到小数点后后7位,
25、位,double类型中小数位数为类型中小数位数为15或或16位,即位,即可精确到小数点后可精确到小数点后15或或16位,是位,是float类型的两倍,类型的两倍,因此称为双精度浮点型。因此称为双精度浮点型。使用浮点型使用浮点型 注意,对于一个小数,其默认类型都是注意,对于一个小数,其默认类型都是double类型,如果需要指定为类型,如果需要指定为float类型,类型,必须在小数后面添加必须在小数后面添加F或或f后缀。后缀。示例:示例:double score1=5.648;float score=9.54;/编译错误编译错误 float score=9.56f;3.4.3 decimal类型类
26、型在日常生活中,需要有表示财务信息等的在日常生活中,需要有表示财务信息等的要求精度更高的小数,在要求精度更高的小数,在C#中需要用中需要用decimal类型表示。类型表示。decimal类型由类型由128位组成,其精度可达位组成,其精度可达28位,表示范围比位,表示范围比float小,原因是小,原因是decimal使使用了更多的字节来表示小数。用了更多的字节来表示小数。注意:如果需要指定某小数为注意:如果需要指定某小数为decimal类型,类型,必须在小数的后面添加必须在小数的后面添加M或或m后缀。后缀。使用使用decimal类型类型 decimal schoolfees=3000.56m;d
27、ecimal schoolfees=3000.56;/编译错误编译错误不能隐式地将不能隐式地将 Double 类型转换为类型转换为“decimal”类型类型注意,在程序代码中书写一个小数常数时,注意,在程序代码中书写一个小数常数时,C#默默认该小数常数为认该小数常数为double类型。如果不希望类型。如果不希望C#使用使用上述默认的方式来判断一个小数常数的类型,可上述默认的方式来判断一个小数常数的类型,可以通过为数值常数添加后缀的方法来指定小数常以通过为数值常数添加后缀的方法来指定小数常数的类型。可以使用的数值常数后缀有以下两种。数的类型。可以使用的数值常数后缀有以下两种。f(或者(或者F)后
28、缀:加在任何一种数值常数后面,代表)后缀:加在任何一种数值常数后面,代表该常数是该常数是float类型。类型。m(或者(或者M)后缀:加在任何一种数值常数后面,代表)后缀:加在任何一种数值常数后面,代表该常数是该常数是decimal类型。类型。3.4.3 布尔型布尔型日常生活中的,常有是否党员这样的信息。日常生活中的,常有是否党员这样的信息。在在C#中,这类信息用布尔型(中,这类信息用布尔型(bool)表示。)表示。C#语言中的布尔(语言中的布尔(bool)型只包含两个值,)型只包含两个值,即即true和和false,主要用于,主要用于“是否是否”类型的类型的数据上。数据上。使用布尔型使用布尔
29、型 bool IsPartyMember=false;bool IsPartyMember=0;/编译错误编译错误注意,在注意,在C#中,中,bool值不能和整数值相互值不能和整数值相互转化,这点和转化,这点和C或或C+不同。如果试图使用不同。如果试图使用0表示表示false,非,非0值表示值表示true,将导致编译,将导致编译错误。错误。3.4.5 结构体类型结构体类型在日常生活中,例如学生基本信息由姓名、在日常生活中,例如学生基本信息由姓名、性别、年龄、班级和学院等信息组成,是性别、年龄、班级和学院等信息组成,是一个整体,不可分割。对于诸如此类的包一个整体,不可分割。对于诸如此类的包含一组
30、信息的信息,在含一组信息的信息,在C#中需要使用结构中需要使用结构体表示。体表示。结构体类型是一种复合值类型,是由一系结构体类型是一种复合值类型,是由一系列相关的、但类型不一定相同的数据组织列相关的、但类型不一定相同的数据组织在一起而成的,是具有某一种组织结构的在一起而成的,是具有某一种组织结构的整体,使用整体,使用struct关键字来创建,使用关键字来创建,使用“”操作符可以访问结构体的成员。操作符可以访问结构体的成员。使用结构体类型使用结构体类型struct student public string name;public uint age;public char sex;public
31、string DepartmentName;public string DepartmentTel;.注意:注意:public修饰符用来修饰变量修饰符用来修饰变量name,表示该变量是公共变量,可以被外界访问,表示该变量是公共变量,可以被外界访问,默认为默认为private,表示私有变量,不可以,表示私有变量,不可以被外界访问。被外界访问。使用结构体类型使用结构体类型上述代码中结构体成员较多,且其中学院名称和学院电上述代码中结构体成员较多,且其中学院名称和学院电话两个成员都用于描述学院的信息,因此可以将其两者话两个成员都用于描述学院的信息,因此可以将其两者构成一个结构体,嵌套在其中,使得结构体
32、的组织更具构成一个结构体,嵌套在其中,使得结构体的组织更具逻辑性。逻辑性。struct student public string name;public uint age;public char sex;public struct department public string DepartmentName;public string DepartmentTel;.结构体类型示例结构体类型示例namespace structstudent class Program struct student public string name;public uint age;public char
33、sex;public struct department public string DepartmentName;public string DepartmentTel;static void Main(string args)student stu1;student.department d1;stu1.name=John;d1.DepartmentName=computer;3.4.6 枚举类型枚举类型日常生活中,有这么一类信息,如学生的日常生活中,有这么一类信息,如学生的学位有学士、硕士和博士,而且只有这学位有学士、硕士和博士,而且只有这3个个“有限状态有限状态”值,值,C#语言提供了
34、枚举类型。语言提供了枚举类型。枚举类型就是一组有相应含义的单词的集枚举类型就是一组有相应含义的单词的集合,称为枚举成员列表。合,称为枚举成员列表。该组单词集合对应着一组逻辑上密不可分该组单词集合对应着一组逻辑上密不可分的整数,这些整数称为对应单词的值。枚的整数,这些整数称为对应单词的值。枚举类型是一种值类型,由举类型是一种值类型,由enum关键词创建,关键词创建,使用使用“”符号可以取得枚举成员的值。符号可以取得枚举成员的值。使用枚举类型使用枚举类型using System;namespace EnumExample class Program enum degree bachelor,mas
35、ter,doctor;static void Main(string args)string s=His degree is+degree.bachelor;Console.WriteLine(s);执行上述代码,输出结果为:执行上述代码,输出结果为:His degree is bachelor。使用枚举类型注意事项使用枚举类型注意事项每种枚举类型具有一种基础类型,此基础每种枚举类型具有一种基础类型,此基础类型可以是除类型可以是除char类型以外的任何整型。类型以外的任何整型。如果不指明基础数据类型,则默认为如果不指明基础数据类型,则默认为int类类型。型。默认情况下,第一个枚举成员的值为默认
36、情况下,第一个枚举成员的值为0,后,后面每个枚举成员的值依次递增面每个枚举成员的值依次递增1。可以通过为枚举成员赋值来改变默认值,可以通过为枚举成员赋值来改变默认值,而且不同成员的值可以相同。而且不同成员的值可以相同。对枚举类型的数据可以进行运算操作,但对枚举类型的数据可以进行运算操作,但要注意运算后的枚举类型数据的值应在枚要注意运算后的枚举类型数据的值应在枚举成员值的范围之内。举成员值的范围之内。枚举类型示例枚举类型示例正确代码:正确代码:enum range Max=1000,Min=10;enum Days Mon,Tue,Wed,Thu,Fri,Sat,Sun;Days day=Day
37、s.Mon;Int i=(int)Days.Tue;/i=1enum Colors:shortRed=3,Yellow,Blue=3,Black;错误代码错误代码enum Color:uint Red=-1,Green=-2,Blue=-3;/错误错误enum ColorRed=Green,Green,Blue;/错误错误注意,枚举类型与结构体类型不同,结构体类注意,枚举类型与结构体类型不同,结构体类型数据的值是一组复合值,而枚举类型数据的型数据的值是一组复合值,而枚举类型数据的值只能是枚举成员列表中的某一个枚举成员的值只能是枚举成员列表中的某一个枚举成员的值。值。3.4.7 string类型
38、类型例如学生姓名,年级这样的信息,在例如学生姓名,年级这样的信息,在C#中使用中使用string类型表示类型表示。string类型属于引用类型,是系统提供的类类型属于引用类型,是系统提供的类System.String的别名,表示的别名,表示Unicode字符,因字符,因此可以认为此可以认为“string”和和“String”在使用上没在使用上没有任何区别。有任何区别。创建一个创建一个string类型的字符串有如下两种表达方类型的字符串有如下两种表达方式。式。使用双引号将字符串括起来,对于特殊符号,可采用使用双引号将字符串括起来,对于特殊符号,可采用转义符来表示。转义符来表示。使用使用“”符号引
39、起来,这样字符串中的所有字符均符号引起来,这样字符串中的所有字符均被识别为普通字符,可以代替转义符,减少了书写上被识别为普通字符,可以代替转义符,减少了书写上的麻烦。的麻烦。使用使用string类型类型String StudentName=张山张山;string ClassName=机电机电5班班;string SchoolInfo=北京大学简称为北京大学简称为北大北大;string SchoolInfo1=北京大学简称为北京大学简称为北大北大;string SchoolInfo2=北京大学简称为北京大学简称为“北大北大”;Console.WriteLine(StudentName);Cons
40、ole.WriteLine(ClassName);Console.WriteLine(SchoolInfo);Console.WriteLine(SchoolInfo1);Console.WriteLine(SchoolInfo2);执行上述代码,输出结果如下执行上述代码,输出结果如下:张山张山机电机电5班班北京大学简称为北京大学简称为“北大北大”北京大学简称为北京大学简称为北大北大北京大学简称为北京大学简称为“北大北大”3.4.8 object类型类型Object类型是预定义类类型是预定义类System.Object的的别名,它是别名,它是C#中所有其他类型(预定义类中所有其他类型(预定义类
41、型、用户定义类型、引用类型和值类型)型、用户定义类型、引用类型和值类型)的基类,即所有类型都是直接或间接从的基类,即所有类型都是直接或间接从object类型继承的。因此,可以将任意类类型继承的。因此,可以将任意类型的值赋给型的值赋给object类型的变量。类型的变量。使用使用object类型类型 object a;a=1;Console.WriteLine(a);执行上述代码,运行结果为:执行上述代码,运行结果为:1。3.4.9 数据类型的转换数据类型的转换成绩变量为成绩变量为float类型,在填写成绩时,若类型,在填写成绩时,若输入成绩时填写了整数,则系统进行计算输入成绩时填写了整数,则系统
42、进行计算时会自动将其转换为浮点类型。又如在年时会自动将其转换为浮点类型。又如在年龄一项填写了小数,系统进行计算时需要龄一项填写了小数,系统进行计算时需要先将其转换为整数。先将其转换为整数。C#语言的数据类型转换分为隐式转换和显语言的数据类型转换分为隐式转换和显示转换。隐式转化是系统默认的转换类型,示转换。隐式转化是系统默认的转换类型,不需要加以声明;显式转化又称为强制转不需要加以声明;显式转化又称为强制转换,需要加以声明。换,需要加以声明。隐式转换隐式转换 隐式转换是系统默认的、不需要加以声明隐式转换是系统默认的、不需要加以声明就可以进行的转换。就可以进行的转换。例如:例如:float sco
43、re=68;long StudentNumber=20076868;进行隐式的类型转换,实际就是从低精度、进行隐式的类型转换,实际就是从低精度、小范围的数据类型转换为高精度、大范围小范围的数据类型转换为高精度、大范围的数据类型。这种转换通常很顺利,因为的数据类型。这种转换通常很顺利,因为大范围类型的变量具有足够的空间存放小大范围类型的变量具有足够的空间存放小范围类型的数据。范围类型的数据。隐式类型转换表隐式类型转换表源类型目的类型sbyteshort、int、long、float、double、decimalbyteshort、ushort、int、uint、long、ulong、float、
44、double、decimalshortint、long、float、double、decimalushortint、uint、long、ulong、float、double、decimalintlong、float、double、decimaluintlong、ulong、float、double、decimallong、ulongfloat、double、decimalfloatdoublecharushort、int、uint、long、ulong、float、double、decimal隐式转换隐式转换大部分类型都可以转化为大部分类型都可以转化为float、double和和decimal
45、类型,原因是这类型,原因是这3种数据类型所表示值的种数据类型所表示值的范围比较大。不存在浮点型到范围比较大。不存在浮点型到decimal类型的相类型的相互转换,原因是互转换,原因是decimal所表示的范围相比所表示的范围相比float、double较小,但是精度比较小,但是精度比float、double高。不高。不存在到存在到char类型的隐式转化。类型的隐式转化。注意,注意,int类型的常数可转换为类型的常数可转换为sbyte、byte、short、ushort,但前提是常数的值处于上述类,但前提是常数的值处于上述类型的范围之内。例如,型的范围之内。例如,sbyte=122,122默认类型
46、默认类型为为int,将整型转化为,将整型转化为sbye,尽管不符合表中隐式尽管不符合表中隐式转换的规则,但因为转换的规则,但因为122在在sbyte类型的范围之内,类型的范围之内,所以仍是正确的。所以仍是正确的。显示转换显示转换显式转换,又显式转换,又称强制转换,称强制转换,可以理解为从可以理解为从高精度、大范高精度、大范围的数据类型围的数据类型转换为低精度、转换为低精度、小范围的数据小范围的数据类型。类型。示例代码:示例代码:int age=(int)24.5;源类型目的类型sbytebyte、ushort、uint、ulong 或 charbytesbyte 或者charshortsbyt
47、e、byte、ushort、uint、ulong 或 charushortsbyte、byte、short 或 charintsbyte、byte、short、ushort、uint、ulong 或 charuintsbyte、byte、short、ushort、int 或 charlongsbyte、byte、short、ushort、int、uint、ulong 或 charulongsbyte、byte、short、ushort、int、uint、long 或 charcharsbyte、byte 或 shortfloatsbyte、byte、short、ushort、int、uint、
48、long、ulong、char 或 decimaldoublesbyte、byte、short、ushort、int、uint、long、ulong、char、float 或 decimaldecimalsbyte、byte、short、ushort、int、uint、long、ulong、char、float 或 double3.5 常量和变量常量和变量数据是计算机程序处理的主要对象。如前数据是计算机程序处理的主要对象。如前所述,数据可以是整型、浮点型等,这些所述,数据可以是整型、浮点型等,这些类型的数据值在程序运行过程中可以是变类型的数据值在程序运行过程中可以是变化的,也可以固定不变。在程
49、序运行的整化的,也可以固定不变。在程序运行的整个过程中,其值始终不可改变的量称为常个过程中,其值始终不可改变的量称为常量,其值可以变化的量称为变量。一旦声量,其值可以变化的量称为变量。一旦声明了某种数据类型的常量或变量,系统就明了某种数据类型的常量或变量,系统就会为该常量或变量分配该数据类型相应的会为该常量或变量分配该数据类型相应的空间,在该空间中存放该常量或变量的数空间,在该空间中存放该常量或变量的数据。据。3.5.1常量和变量的命名规则常量和变量的命名规则在在C#中,使用常量和变量的基本原则为先定义,中,使用常量和变量的基本原则为先定义,后使用。后使用。命名规则:命名规则:标识符必须以字母
50、或下划线开头。标识符必须以字母或下划线开头。标识符只能由字母、数字和下划线组成,不能包含空标识符只能由字母、数字和下划线组成,不能包含空格、标点符号、运算符。格、标点符号、运算符。标识符不能与标识符不能与C#中的关键字、库函数名同名。中的关键字、库函数名同名。C#允许在标识符前加上前缀允许在标识符前加上前缀,即可以用前缀,即可以用前缀加上加上关键字作为标识符的名称,如关键字作为标识符的名称,如using是合法的标识符是合法的标识符名。引入前缀名。引入前缀的目的在于与其他语言进行交互时避的目的在于与其他语言进行交互时避免冲突,因为免冲突,因为实际上并不是名称的一部分,其他编实际上并不是名称的一部
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。