




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章将以第一个C#程序“HelloWorld”为例,1、向读者演示C#应用程序应用程序的【代码组成代码组成】和【编译过程编译过程】2、以开发一个真实的一个真实的“学生信息管理系统学生信息管理系统”为背景为背景3、详细讲述数据类型数据类型、常量常量、变量变量等C#语言基础知识语言基础知识。Microsoft. NET Framework 体系结构体系结构操作系统公共语言运行时公共语言运行时 (CLR).Net Framework类库类库 (FCL)章节内容章节内容3.1 引言引言3.2 编写第一个编写第一个C#程序程序3.3 数据类型数据类型3.4 常用类型常用类型3.5 常量和变量常量和变量3
2、.6 小结小结 3.1 引言引言 计算机中的计算机中的高级语言(如高级语言(如C#、C+等)等)现实世界中的现实世界中的人类语言(如汉语、英语等)人类语言(如汉语、英语等)有很多相似之处有很多相似之处: 在人类语言中的组成元素有在人类语言中的组成元素有 单词、单词、 短语、短语、 句子、句子、段落、段落、文章文章;在计算机高级语言中相对应有在计算机高级语言中相对应有常量与变量、常量与变量、表达式、表达式、语句、语句、函数、函数、程序;程序;在人类语言中在人类语言中1、单词单词、短语、短语、句子、句子、段落、段落、文章文章;2、单词、单词、短语、短语、句子句子有不同的性质有不同的性质【如形容词、
3、动词短语、感叹句等】【如形容词、动词短语、感叹句等】 在计算机高级语言中的在计算机高级语言中的1、常量与变量、常量与变量、表达式、表达式、语句、语句、函数、函数、程序;程序;2、常量与变量常量与变量、表达式表达式有不同的数据类型有不同的数据类型【如整型常量、浮点型变量、字符类型表达式等】【如整型常量、浮点型变量、字符类型表达式等】 了解这些相似之处,对理解和掌握计算机高级语言会有启发和帮助。了解这些相似之处,对理解和掌握计算机高级语言会有启发和帮助。3.2 编写第一个编写第一个C#程序程序 【C#应用程序】应用程序】的常用类型的常用类型主要有主要有3种种,分别为,分别为1、控制台控制台应用程序
4、应用程序 2、Windows窗体窗体应用程序、应用程序、3、Web应用程序,应用程序,具体特点分别如下:具体特点分别如下:1、控制台应用程序控制台应用程序是是没有窗口的应用程序没有窗口的应用程序,通过键盘通过键盘以输入命令行的形式以输入命令行的形式操作程序操作程序。 先前的先前的DOS程序大都是这种类型程序,现在一般用作后台服务。程序大都是这种类型程序,现在一般用作后台服务。2、Windows窗体应用程序窗体应用程序是是有窗口的应用程序有窗口的应用程序,主要主要通过鼠标进行操作通过鼠标进行操作。因其图形因其图形化操作和界面直观等优点,非常受欢迎,当前大多数应用程序都是这种类型。化操作和界面直观
5、等优点,非常受欢迎,当前大多数应用程序都是这种类型。3、Web应用程序应用程序是是将将Windows窗体应用程序窗体应用程序以网页的形式表现出来,以网页的形式表现出来, 是是Web网站与传统应用程序的结合体。网站与传统应用程序的结合体。 Web应用程序类型的应用程序越来越多,有着广泛的应用前景,例如网上办公和应用程序类型的应用程序越来越多,有着广泛的应用前景,例如网上办公和网上购物系统,都是这种类型的应用程序网上购物系统,都是这种类型的应用程序。 控制台应用程序较简单,通常作为初学者学习的第一种程序类型,用来熟悉最基本的语法知识。控制台应用程序较简单,通常作为初学者学习的第一种程序类型,用来熟
6、悉最基本的语法知识。本节介绍如何在本节介绍如何在Visual Studio2008下创建下创建C#控制台应用程序控制台应用程序“HelloWorld”。创建第一个创建第一个“HelloWorld”控制台应用程序步骤:控制台应用程序步骤:1、打开打开Visual Studio2008,在菜单栏中,在菜单栏中单击【单击【文件文件】|【新建新建】|【项目项目】命令,】命令,2、弹出【弹出【新建项目新建项目】窗口。】窗口。此窗口列出了此窗口列出了Visual C#能够创建的应用程序类型能够创建的应用程序类型3、选择选择“控制台应用程序控制台应用程序”作为作为项目类型项目类型,并将应用程序的名称改为,并
7、将应用程序的名称改为“HelloWorld”,单击【确,单击【确定】定】新建新建“HelloWorld”项目项目代码演示代码演示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(); 命名空间命名空间类类入口函数入口函数 using System; usi
8、ng System.Collections.Generic; using System.Text; namespace HelloWorld class Program static void Main(string args) Console.WriteLine(Hello World!); Console.ReadLine(); 3.2.1 3.2.1 代码结构代码结构 C#程序由程序由命名空间命名空间-namespace、类类-class、程序入口函数程序入口函数-Main函数函数组成。组成。 命名空间命名空间是是类类的逻辑组合的逻辑组合;1、命名空间命名空间和和类类的关系的关系可以理解
9、为可以理解为文件夹文件夹和和文件文件的关系。的关系。2、使用命名空间使得类之间更具有组织性,且避免了使用命名空间使得类之间更具有组织性,且避免了类的命名类的命名冲突问题。冲突问题。 3、如果、如果创建一个类创建一个类,要使用要使用namespace给出给出命名空间命名空间的名称的名称;4、如果、如果使用类,用使用类,用using指定该类所属命名空间指定该类所属命名空间,或给出类的或给出类的“绝对路径绝对路径”,即,即“命名空间命名空间名类名名类名”5、如果、如果使用同一个命名空间的类,则不需要使用使用同一个命名空间的类,则不需要使用using关键字来引用命名空间关键字来引用命名空间。 类即一组
10、类即一组属性属性和和方法方法的集合;的集合; 1、C#使用使用类类来搭建整个应用程序,来搭建整个应用程序, 2、没有全局函数和全局变量,这也体现了、没有全局函数和全局变量,这也体现了面向对象面向对象的程序设计思想。的程序设计思想。 Main函数函数是是C#应用程序的入口应用程序的入口;1、C#应用程序执行的【第一个函数】应用程序执行的【第一个函数】2、C#程序由多个类搭建而成,入口就是程序由多个类搭建而成,入口就是Main函数。函数。3、一个应用程序中须有一个、一个应用程序中须有一个Main函数且只能有一个类包含函数且只能有一个类包含Main函数,要求函数,要求“Main”的首字母大写的首字母
11、大写3.2.2 3.2.2 编译运行编译运行编译过程:【编译过程:【.cs.cs文件文件】-【.exe.exe可执行程序可执行程序】。】。对于对于Visual Studio 2008Visual Studio 2008开发平台下的开发平台下的C#C#应用程序,来编译运行。应用程序,来编译运行。 1 1、单击工具栏中的启动按钮、单击工具栏中的启动按钮 2 2、按【、按【F5F5】键】键(按【按【F5F5】键进入调试模式,】键进入调试模式, 按【按【CtrlCtrl】+ +【F5F5】组合键进入非调试模式】组合键进入非调试模式)创建第一个控制台程序并且调试运行创建第一个控制台程序并且调试运行。为什
12、么要从为什么要从“过时的过时的“控制台程序控制台程序开始?开始?唯一需要学的唯一需要学的三条控制台指令三条控制台指令:Console.WriteLine Console.ReadLine Console.ReadKey至于至于Console.是什么意思不用管,是什么意思不用管,Console.WriteLine:占位符占位符0编写程序时注意的问题:编写程序时注意的问题:1.每行最后要用每行最后要用“;” 2.注意注意”;”和和 “;” 4.Console.WriteLine(“0+1=2”,i,j,k) Console.ReadKey();VS开发环境介绍开发环境介绍1、解决方案管理器、解决方
13、案管理器:解决方案解决方案、工程工程、文件文件2、C#源文件一般以源文件一般以cs结尾结尾3、C#程序的入口是程序的入口是Main函数函数,在在Main中写代码就行中写代码就行,暂时不用关心其他部分是什么意思暂时不用关心其他部分是什么意思。4、错误列表。见到错误不用慌。错误排除演示错误列表。见到错误不用慌。错误排除演示5、显示代码行号。、显示代码行号。(工具工具-选项选项-文本编辑器文本编辑器-c#-.)C#语法语法1、从上到下一条条的依次执行;、从上到下一条条的依次执行;2、大小写敏感、大小写敏感3、函数参数用函数参数用()包围包围4、两句代码之间用两句代码之间用;分割分割5、注释:单行注释
14、注释:单行注释(/)、多行注释、多行注释(/* */)6、String name=Console.ReadLine(); 7、Console.WriteLine(“0你好你好”,name) 8、错误使用:、错误使用:int i=10; Console.WriteLine(“i”);C#应用程序文件夹结构应用程序文件夹结构 Visual Studio .NET 2005创建一个与项目同名的文件夹,为创建一个与项目同名的文件夹,为“HelloWorld”; 该文件夹该文件夹包含包含项目文件项目文件“HelloWorld.csproj”和和其他关联文件其他关联文件 ; 每个新项目每个新项目都都创建了
15、创建了 bin、obj和和Properties 三个文件夹三个文件夹。 Bin和和obj这这2个文件夹下都有一个个文件夹下都有一个 Debug 子目录,其含可执行文件子目录,其含可执行文件HelloWorld.exe 在在“解决方案资源管理器解决方案资源管理器”启用启用“显示所有文件显示所有文件”选项,选项,可看可看“HelloWorld”项目的项目的结构结构 /这是用这是用 C# 编写的一个简单的编写的一个简单的 HelloWorld程序程序using System;namespace Notepadclass HelloWorldstatic void Main() Console.Wri
16、teLine(Hello World);声明HelloWorld类描述代码的注释程序入口点程序入口点,Main 的返回类型为的返回类型为void控制台类的WriteLine()方法用于显示输出结果导入 System命名空间声明命名空间 Notepad将文件保存为将文件保存为 HelloWorld.csHello World程序程序总结总结.NET Framework由【由【.NET Framework类库类库】和【】和【公共语言运行时公共语言运行时】两主要组件组成】两主要组件组成 CLR是是管理用户代码执行管理用户代码执行的的现代运行时环境现代运行时环境,提供,提供JIT编译、内存管理、异常管
17、理、调试等方面服务编译、内存管理、异常管理、调试等方面服务CTS定义声明、定义、管理定义声明、定义、管理 所有类型所遵循的规则所有类型所遵循的规则,而无需考虑源语言,而无需考虑源语言 CLS是所有针对是所有针对 .NET的的编译器编译器都必须支持的一组最低标准都必须支持的一组最低标准,以确保语言的互操作性,以确保语言的互操作性 命名空间命名空间是是一组包含相关方法的相似类一组包含相关方法的相似类,专门用于避免类与类之间的名称冲突专门用于避免类与类之间的名称冲突即时即时 (JIT) 编译器编译器将将MSIL代码代码编译为编译为特定于特定于目标操作系统目标操作系统和和计算机体系结构计算机体系结构的
18、的本机代码本机代码; Visual Studio .NET 2005 是用于创建、编写、运行和调试程序的是用于创建、编写、运行和调试程序的集成开发环境集成开发环境。 用户使用用户使用VS.NET中的中的“起始页起始页”可以自定义可以自定义IDE。IDE还包含许多有用的链接,如最还包含许多有用的链接,如最近的项目、下载和联机新闻组等近的项目、下载和联机新闻组等 VS.NET中的程序中的程序组成【组成【项目项目】和【和【解决方案解决方案】。 项目是一组相关的文件,解决方案则是一组相关的项目项目是一组相关的文件,解决方案则是一组相关的项目 Visual Studio .NET为用户提供了为用户提供了
19、用于浏览文件的各种窗口用于浏览文件的各种窗口 “动态帮助动态帮助”窗口窗口为用户提供了为用户提供了与当前光标所在位置相关与当前光标所在位置相关的文章的文章程序运行界面程序运行界面运行按钮运行按钮代码分析代码分析 using System; 表明该程序要使用表明该程序要使用System命名空间命名空间下的下的类类,因此,因此用用using来指明引用的命名空间来指明引用的命名空间。 如果不指明命名空间就使用该空间下的类,会出现编译错误。如果不指明命名空间就使用该空间下的类,会出现编译错误。 namespace HelloWorld 表明该程序使用表明该程序使用namespace关键词声明了一个命名
20、空间关键词声明了一个命名空间HelloWorld, 其他类要调用该命名空间下定义的类,需使用其他类要调用该命名空间下定义的类,需使用using关键词,即关键词,即using HelloWorld。 class Program 表明该程序表明该程序使用使用class关键词定义一个关键词定义一个类类Program,该类属于命名空间,该类属于命名空间HelloWorld static void Main(string args) 声明声明Main函数,函数,static是修饰符,是修饰符,void表明表明Main函数没有返回值,函数没有返回值,string args是参数列表是参数列表 Consol
21、e.WriteLine(“Hello World!); 使用使用命名空间命名空间System里的里的Console类类中的中的WriteLine函数函数输出字符串输出字符串“Hello World”。 如果程序头未引用如果程序头未引用System命名空间,须使用命名空间,须使用System.Console.WriteLine全称。全称。 Console.ReadLine(); 调用【调用【命名空间命名空间System】中【中【Console类类】中的】中的ReadLine函数,该函数等待键盘输入,按函数,该函数等待键盘输入,按【Enter】键结束等待】键结束等待。3.3 数据类型数据类型学习某
22、门人类语言时,如汉语中的学习某门人类语言时,如汉语中的词组词组,会发现汉语中的,会发现汉语中的词语词语有有名词和动词名词和动词等分类,这称为等分类,这称为词性词性。计算机高级语言的计算机高级语言的数据数据有有整型整型和和浮点型浮点型等,这叫做等,这叫做数据类型数据类型。数据类型的作用:数据类型的作用: 编译器编译器可根据可根据数据类型数据类型判断它们判断它们是否可以参加某种运算是否可以参加某种运算,从而帮助开发人员减少语法错误从而帮助开发人员减少语法错误。 不同的数据类型,在内存中所占不同的数据类型,在内存中所占字节数不同字节数不同, 如果要处理的数据量非常大,选择适合的数据类型能够在很大程度
23、上节省内存空间。如果要处理的数据量非常大,选择适合的数据类型能够在很大程度上节省内存空间。值类型值类型和和引用类型引用类型是是C#中两种主要的数据类型中两种主要的数据类型;var类型类型为为C#3.5新增类型,新增类型,指针类型指针类型仅可用于仅可用于unsafe模式,模式,用法类似用法类似C+中的指针中的指针,这里不再赘述。,这里不再赘述。 (unsafe模式引用模式引用非非.net DLL提供的如提供的如C编写的外部函数,需要指针来传递该函数编写的外部函数,需要指针来传递该函数 , 优点是可以调用其他优点是可以调用其他dll的函数,提高了兼容性的函数,提高了兼容性 ;缺点是容易内存泄漏;缺
24、点是容易内存泄漏)C#C#数据类型图数据类型图数据类型划分依据数据类型划分依据 C#数据类型数据类型按照数据的按照数据的存储模型存储模型分为分为1、值值类型类型2、引用引用类型类型3、指针指针类型类型4、var类型类型 数据数据的的【存储模型】【存储模型】指的是指的是数据数据【在内存中在内存中】的【】的【保存方式保存方式】 内存中有两个区域可以存放数据内存中有两个区域可以存放数据,一个是【,一个是【栈区栈区】,另一个是【,另一个是【堆区】堆区】。 栈区栈区存放是编译期间就存放是编译期间就分配好的内存空间分配好的内存空间,不会动态增长不会动态增长; 存储在存储在栈中栈中的数据长度通常的数据长度通
25、常较小且固定较小且固定, 堆区堆区是程序运行期间是程序运行期间动态分配的内存空间动态分配的内存空间。 存储在存储在堆中堆中的数据可以动态增长且所需的数据可以动态增长且所需空间通常较大空间通常较大。 值类型值类型的数据存储所需空间通常较小,使用的数据存储所需空间通常较小,使用栈区栈区的内存,的内存, 引用类型引用类型的数据所需空间较大,使用的数据所需空间较大,使用堆区堆区的内存。的内存。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类
26、型类型3.4.8 Object类型类型3.4.9 数据类型的转换数据类型的转换3.4.1 整型整型整型就是整型就是整数类型整数类型,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,
27、295无符号无符号32位整数位整数long-9,223,372,036,854,775,8089,223,372,036,854,775,807有符号有符号64位整数位整数ulong018,446,744,073,709,551,615无符号无符号64位整数位整数注意:注意:有符号有符号指的是指的是第一位二进制数表示符号第一位二进制数表示符号,0 0代表正数,代表正数,1 1代表负数;代表负数;无符号指的是所有的位数都用来表示数值,没有符号位,均为正数。无符号指的是所有的位数都用来表示数值,没有符号位,均为正数。sbytesbyte是一个有符号是一个有符号8 8位二进制数,第一位用来表示符号,
28、因此位二进制数,第一位用来表示符号,因此sbytesbyte表示的范围为表示的范围为-128-127-128-127; bytebyte是一个无符号是一个无符号8 8位二进制数,位二进制数,8 8位全用来表示数值,表示范围为位全用来表示数值,表示范围为0-2550-255,其他类型依此类推,其他类型依此类推char类型也是一种整型,常用来表示字符类型也是一种整型,常用来表示字符,由由16位二进制数组成位二进制数组成,表示范围为表示范围为0-65535, 代表世界上大多数书面语言符号,代表世界上大多数书面语言符号, Unicode字符使用时可写成字符、十六进制和字符使用时可写成字符、十六进制和u
29、nicode字符字符,例如字符例如字符A可以表示为可以表示为A、x0041和和u0041。 整型整型byte age=18; char sex=男男; long StudentNumber=200745054489;注意,注意,char类型一次只能赋值一个字符类型一次只能赋值一个字符,不能赋值两个字符,例如不能赋值两个字符,例如男生男生。注意:注意:整型溢出,整型溢出,byte age=300,产生溢出错误,产生溢出错误。对于等号右边的整数常数,对于等号右边的整数常数,C#会按照默认的方式来判断所属类型,会按照默认的方式来判断所属类型,即按照一定的顺序判断整数的类型,即即按照一定的顺序判断整数
30、的类型,即int、uint、long、ulong。如果不希望如果不希望C#使用上述默认的方式来判断一个整数数值常数的类型,可使用上述默认的方式来判断一个整数数值常数的类型,可通过通过添加后缀添加后缀来指定来指定整数常数的类型整数常数的类型。u(或(或U)后缀后缀:加在:加在整数常数整数常数后面,后面,代表该常数是代表该常数是uint类型或者类型或者ulong类型类型。 具体类型由常数的实际值决定。具体类型由常数的实际值决定。C#优先匹配优先匹配uint类型。类型。l(或(或L)后缀后缀:加在整数常数后面,:加在整数常数后面,代表该常数是代表该常数是long类型或者类型或者ulong类型类型。
31、具体类型由常数的实际值决定。具体类型由常数的实际值决定。C#优先匹配优先匹配long类型。类型。ul后缀后缀:加在整型常数后面,代表该常数是:加在整型常数后面,代表该常数是ulong类型。类型。例如:例如:uint age=18U; long StudentNumber =200745054489L; 对于不可打印字符,例对于不可打印字符,例如如回车符、换行符回车符、换行符等,等,则需要采用转义符则需要采用转义符。 char c=a; Console.WriteLine(c);Console.WriteLine(abcn)转义符转义符字符字符十六进制表示十六进制表示单引号单引号0 x0027双
32、引号双引号0 x0022反斜杠反斜杠0 x005C0空字符空字符0 x0000a发出一声响铃发出一声响铃0 x0007b退格退格0 x0008n换行换行0 x000Ar回车回车0 x000Df换页符换页符0 x000Ct水平制表符水平制表符0 x0009v垂直制表符垂直制表符0 x000B3.4.1 整型整型3.4.2 浮点型浮点型 在日常生活中,像学生成绩,要用小数表示。在日常生活中,像学生成绩,要用小数表示。 在在C#中使用中使用浮点型浮点型表示表示小数小数,浮点浮点就是指就是指小数点小数点 。 在在C#中有中有两种小数类型两种小数类型,分别为,分别为32位位单精度浮点型单精度浮点型flo
33、at; 64位位双精度浮点型双精度浮点型double; 精度指的是小数位数,小数位数越多,精度越高,小数位数越少,精度越低。精度指的是小数位数,小数位数越多,精度越高,小数位数越少,精度越低。float类型中小数位数为类型中小数位数为7位位,即可精确到小数点即可精确到小数点后后7位位,double类型中小数位数为类型中小数位数为15或或16位,位,可精确到小数点可精确到小数点后后15或或16位位,是,是float类型的两倍,称为双精度浮点型。类型的两倍,称为双精度浮点型。 注意,对于一个小数,其默认类型都是注意,对于一个小数,其默认类型都是double类型,类型, 如果需要指定为如果需要指定为
34、float类型,必须在小数后面添加类型,必须在小数后面添加F或或f后缀后缀。 示例:示例: double score1=5.648; float score=9.54; /编译错误编译错误 float score=9.56f;3.4.3 decimal类型类型 日常生活中需表示财务信息等要求精度更高的小数,在日常生活中需表示财务信息等要求精度更高的小数,在C#中需用中需用decimal类型表示。类型表示。 decimal类型由类型由128位(位(16字节)组成,其精度可达字节)组成,其精度可达28位位,表示范围比,表示范围比float小,小, 原因是原因是decimal使用了更多的字节来表示小
35、数使用了更多的字节来表示小数。 注意:如果需要指定某小数为注意:如果需要指定某小数为decimal类型,必须在类型,必须在小数的后面添加小数的后面添加M或或m后缀后缀。 decimal schoolfees=3000.56m; decimal schoolfees=3000.56;/编译错误编译错误 不能隐式地将不能隐式地将 Double 类型转换为类型转换为“decimal”类型类型 注意,在程序代码中书写一个小数常数时,注意,在程序代码中书写一个小数常数时,C#默认该小数常数为默认该小数常数为double类型。类型。 如果不希望如果不希望C#使用上述默认的方式来判断一个小数常数的类型,使用
36、上述默认的方式来判断一个小数常数的类型, 可以通过为数值常数可以通过为数值常数添加后缀的方法添加后缀的方法来指定小数常数的类型。来指定小数常数的类型。 可以使用的数值常数后缀有以下两种。可以使用的数值常数后缀有以下两种。 f(或者(或者F)后缀:后缀: 加在任何一种数值常数后面,代表该常数是加在任何一种数值常数后面,代表该常数是float类型。类型。 m(或者(或者M)后缀:加在任何一种数值常数后面,代表该常数是后缀:加在任何一种数值常数后面,代表该常数是decimal类型。类型。3.4.3 布尔型布尔型 日常生活中的,常有日常生活中的,常有是否党员是否党员这样的信息。在这样的信息。在C#中这
37、类信息用中这类信息用布尔型(布尔型(bool)表示)表示。 C#语言中的布尔(语言中的布尔(bool)型)型只包含两个值只包含两个值-true和和false,用于,用于“是否是否”类型类型的数据的数据上。上。 bool IsPartyMember=false; bool IsPartyMember =0;/编译错误编译错误 注意,在注意,在C#中,中,bool值不能和整数值相互转化,这点和值不能和整数值相互转化,这点和C或或C+不同。不同。 如果试图使用如果试图使用0表示表示false,非,非0值表示值表示true,将导致编译错误。,将导致编译错误。 数据类型总结数据类型总结 1、各类型所占内
38、存、各类型所占内存: byte、 bool: 1个字节个字节 short int、char: 2个字节个字节 int 、float: 4个字节个字节 long int,double:8个字节个字节 decimal: 16个字节个字节 2 、常量默认值常量默认值:一个:一个整数常量整数常量默认是默认是 int,一个一个小数常量小数常量默认是默认是 double 3、类型后缀:、类型后缀:U、L、 UL、F、 D 、M(不(不 区分大小写)区分大小写)3.4.5 结构体类型结构体类型学生基本信息学生基本信息由由姓名、性别、年龄、班级、学院姓名、性别、年龄、班级、学院等信息组成,是一个整体,不可分割
39、。等信息组成,是一个整体,不可分割。对于诸如此类的对于诸如此类的包含一组信息包含一组信息的信息的信息,在在C#中需要使用中需要使用结构体结构体表示表示。结构体类型是一种结构体类型是一种复合值类型复合值类型,是具有某一种组织结构的整体是具有某一种组织结构的整体 是由一系列相关的、但类型不一定相同的数据组织在一起而成的,是由一系列相关的、但类型不一定相同的数据组织在一起而成的, 使用使用struct关键字来创建,使用关键字来创建,使用“”操作符可以访问结构体的成员。操作符可以访问结构体的成员。struct student public string name; public uint age; p
40、ublic char sex; public string DepartmentName; public string DepartmentTel; . .注意:注意: public修饰符修饰符用来修饰用来修饰变量变量name, public表示该变量是公共变量,可被外界访问,表示该变量是公共变量,可被外界访问, 默认为默认为private,表示私有变量,不可以被外界访问。,表示私有变量,不可以被外界访问。上述代码中结构体成员较多,且其中上述代码中结构体成员较多,且其中学院名称学院名称和和学院电话学院电话两个成员都两个成员都用于描述学院的信息用于描述学院的信息,因此可以将其两者构成一个结构体,
41、嵌套在其中,使得结构体的组织更具逻辑性。因此可以将其两者构成一个结构体,嵌套在其中,使得结构体的组织更具逻辑性。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 ag
42、e; public char sex; public struct department public string DepartmentName; public string DepartmentTel; static void Main(string args) student stu1; student.department d1; =John; d1. DepartmentName =computer; 3.4.6 枚举类型枚举类型学生的学位有学士、硕士和博士,且只有这学生的学位有学士、硕士和博士,且只有这3个个“有限状态有限状态”值,值,C#语言提供枚举类型语言提供
43、枚举类型。枚举类型枚举类型就是一组有相应含义的就是一组有相应含义的单词的集合单词的集合,称为,称为枚举成员列表枚举成员列表。该组单词集合对应着一组逻辑上该组单词集合对应着一组逻辑上密不可分的整数密不可分的整数,这些整数称为对应单词的值这些整数称为对应单词的值。枚举类型是一种值类型枚举类型是一种值类型,由由enum关键词创建关键词创建,使用使用“”符号可以取得枚举成员的值符号可以取得枚举成员的值。using System;namespace EnumExampleclass Program enum degree bachelor,master,doctor; static void Main(
44、string args) string s=His degree is +degree.bachelor ; Console.WriteLine(s); 执行上述代码,输出结果为:执行上述代码,输出结果为:His degree is bachelor每种枚举类型具有每种枚举类型具有一种基础类型一种基础类型,此基础类型可以是除此基础类型可以是除charchar类型以外的任何整型。类型以外的任何整型。如果不指明基础数据类型,则默认为如果不指明基础数据类型,则默认为intint类型类型。默认情况下,第一个枚举成员的值为默认情况下,第一个枚举成员的值为0 0,后面每个枚举成员的值依次递增,后面每个枚举
45、成员的值依次递增1 1。可以通过为枚举成员赋值来改变默认值,而且不同成员的值可以相同。可以通过为枚举成员赋值来改变默认值,而且不同成员的值可以相同。对对枚举类型的数据可以进行运算操作枚举类型的数据可以进行运算操作,但要注意运算后的枚举类型数据的值应在枚举成员值的范围之内。,但要注意运算后的枚举类型数据的值应在枚举成员值的范围之内。正确代码:正确代码:enum range Max=1000, Min=10;enum range Max=1000, Min=10;enum Days Mon, Tue, Wed, Thu, Fri ,Sat, Sun;enum Days Mon, Tue, Wed,
46、 Thu, Fri ,Sat, Sun;Days day=Days.MonDays day=Days.Mon; ;Int i=(int)Days.Tue;/i=1Int i=(int)Days.Tue;/i=1enum Colors:shortRed=3,Yellow,Blue=3, Black;enum Colors:shortRed=3,Yellow,Blue=3, Black;错误代码错误代码enum Colorenum Color:uint Red = -1,Green = -2,Blue = -3 uint Red = -1,Green = -2,Blue = -3 ;/错误错误en
47、um Colorenum Color:Red = Green,Green,Blue; Red = Green,Green,Blue; /错误错误注意,注意,枚举类型与结构体类型不同枚举类型与结构体类型不同,结构体类型数据的值结构体类型数据的值是一组复合值是一组复合值,枚举类型数据的值枚举类型数据的值只能是枚举成员列表中的只能是枚举成员列表中的某一个枚举成员的值某一个枚举成员的值。3.4.7 string类型类型学生学生姓名,年级姓名,年级这样的信息这样的信息在在C#中使用中使用string类型类型表示表示 string类型属于引用类型类型属于引用类型,是的类,是的类System.String的
48、别名的别名, 表示表示Unicode字符,字符,“string”和和“String”在使用上没有任何区别。在使用上没有任何区别。创建一个创建一个string类型的字符串有如下两种表达方式类型的字符串有如下两种表达方式。 1、使用、使用双引号双引号将字符串括起来将字符串括起来, 对于特殊符号,可采用转义符来表示。对于特殊符号,可采用转义符来表示。 2、使用、使用“”符号符号引起来引起来, 这样这样字符串中的所有字符字符串中的所有字符均被识别为普通字符,均被识别为普通字符, 可以代替转义符,减少了书写上的麻烦。可以代替转义符,减少了书写上的麻烦。String StudentName = 张山张山;
49、string ClassName = 机电机电5班班;string SchoolInfo= 北京大学简称为北京大学简称为北大北大;string SchoolInfo1=北京大学简称为北京大学简称为北大北大;string SchoolInfo2=北京大学简称为北京大学简称为“北大北大”;Console.WriteLine(StudentName);Console.WriteLine(ClassName);Console.WriteLine(SchoolInfo);Console.WriteLine(SchoolInfo1);Console.WriteLine(SchoolInfo2);执行上述代
50、码,输出结果如下执行上述代码,输出结果如下:张山张山机电机电5班班北京大学简称为北京大学简称为“北大北大”北京大学简称为北京大学简称为北大北大北京大学简称为北京大学简称为“北大北大” ObjectObject类型类型是是预定义类预定义类System.ObjectSystem.Object的别名的别名,是是C#C#中所有其他类型(预定义类型、用户定义类型、引用中所有其他类型(预定义类型、用户定义类型、引用类型、值类型)的类型、值类型)的基类基类,即所有类型都是直接或间接从即所有类型都是直接或间接从objectobject类型继承的类型继承的。可将任意类型的值赋给可将任意类型的值赋给【object
51、类型的变量类型的变量】 object a; a=1; Console.WriteLine(a); 执行上述代码,运行结果为:执行上述代码,运行结果为:1。3.4.8 object类型类型3.4.9 数据类型的转换数据类型的转换 成绩变量为成绩变量为float类型,在填写成绩时,若输入成绩时填写类型,在填写成绩时,若输入成绩时填写了整数,则系统进行计算时会自动将其转换为浮点类型。了整数,则系统进行计算时会自动将其转换为浮点类型。又如在年龄一项填写了小数,系统进行计算时需要先将其又如在年龄一项填写了小数,系统进行计算时需要先将其转换为整数。转换为整数。 C#语言的数据类型语言的数据类型转换分为转换
52、分为隐式转换隐式转换和和显示转换显示转换。 隐式转化是系统默认的转换类型,不需要加以声明隐式转化是系统默认的转换类型,不需要加以声明; 显式转化又称为强制转换,需要加以声明显式转化又称为强制转换,需要加以声明。 隐式转换隐式转换 隐式转换是系统默认的、不需要加以声明就可以进行的转换。隐式转换是系统默认的、不需要加以声明就可以进行的转换。例如:例如:float score=68; long StudentNumber=20076868; float score=68; long StudentNumber=20076868; 进行隐式的类型转换进行隐式的类型转换,实际就是,实际就是从低精度、小范
53、围的数据类型从低精度、小范围的数据类型转换为转换为高精度、大范围的数据类型高精度、大范围的数据类型。 这种转换通常很顺利,这种转换通常很顺利,因为大范围类型的变量具有足够的空间存放小范围类型的数据。因为大范围类型的变量具有足够的空间存放小范围类型的数据。 大部分类型都可以转化为大部分类型都可以转化为floatfloat、doubledouble和和decimaldecimal类型类型, 原因是这原因是这3 3种数据类型所表示值的范围比较大。种数据类型所表示值的范围比较大。不存在浮点型到不存在浮点型到decimaldecimal类型的相互转换类型的相互转换,原因是,原因是decimaldecim
54、al所表示的范围相比所表示的范围相比floatfloat、doubledouble较小,但是较小,但是精度比精度比floatfloat、doubledouble高。高。不存在到不存在到charchar类型的隐式转化。类型的隐式转化。注意,注意,intint类型的常数可转换为类型的常数可转换为sbytesbyte、bytebyte、shortshort、ushortushort,但前提是常数的值处于上述类型的范围,但前提是常数的值处于上述类型的范围之内。例如,之内。例如,sbyte=122sbyte=122,122122默认类型为默认类型为intint,将整型转化为,将整型转化为sbye,sby
55、e,尽管不符合表中隐式转换的规则,但尽管不符合表中隐式转换的规则,但因为因为122122在在sbytesbyte类型的范围之内,所以仍是正确的。类型的范围之内,所以仍是正确的。源类型源类型目的类型目的类型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、
56、decimaluintlong、ulong、float、double、decimallong、ulongfloat、double、decimalfloatdoublecharushort、int、uint、long、ulong、float、double、decimal隐式类型转换表隐式类型转换表显示转换显示转换 显式转换,又称强制转换,可以理解为从显式转换,又称强制转换,可以理解为从高精度、大范围的数据类型高精度、大范围的数据类型转换为转换为低精度低精度、小范围的数据类型。示例代码:小范围的数据类型。示例代码:int age=(int)24.5;源类型源类型目的类型目的类型sbytebyte、
57、ushort、uint、ulong 或或 charbytesbyte 或者或者charshortsbyte、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 或或 charch
58、arsbyte、byte 或或 shortfloatsbyte、byte、short、ushort、int、uint、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 常量和变量常量和变量数据数据是是计算机程序处理的主要对象计算机程序处理的主要对象。如前所述,数据可以是整型、浮点型等,这些类型的数据值在程
59、序运行过程中可以是变化的,也可以固定不变。如前所述,数据可以是整型、浮点型等,这些类型的数据值在程序运行过程中可以是变化的,也可以固定不变。在程序运行的整个过程中,【在程序运行的整个过程中,【其值始终不可改变的量称为常量其值始终不可改变的量称为常量】【其值可以变化的量称为变量】其值可以变化的量称为变量】一旦声明了某种数据类型的常量或变量,系统就会为该常量或变量一旦声明了某种数据类型的常量或变量,系统就会为该常量或变量分配该数据类型相应的空间分配该数据类型相应的空间,在该空间中存在该空间中存放该常量或变量的数据。放该常量或变量的数据。.1常量和变量的命名规则常量和变量的命名规则在
60、在C#C#中,使用常量和变量的基本原则为中,使用常量和变量的基本原则为先定义,后使用先定义,后使用。 命名规则:命名规则:标识符必须标识符必须以字母或下划线以字母或下划线开头。开头。标识符只能由标识符只能由字母、数字、下划线字母、数字、下划线组成,不能包含组成,不能包含空格、标点符号、运算符空格、标点符号、运算符。标识符标识符不能与不能与C#C#中的关键字、库函数名同名。中的关键字、库函数名同名。C#C#允许在标识符前加上前缀允许在标识符前加上前缀 ,即可用前缀即可用前缀 加上关键字作为标识符的名称加上关键字作为标识符的名称,如,如usingusing是合法的标识符是合法的标识符名。名。引入前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025的PVC管购销合同
- 纺织行业数字化转型试题及答案
- 2025湖南长沙市望城经开区招商投资有限公司招聘9人笔试参考题库附带答案详解
- 2025江西省江铜集团招573人笔试参考题库附带答案详解
- 2025年河南通航机场管理有限公司社会招聘23人笔试参考题库附带答案详解
- 2025山东东营中外运物流有限公司招聘5人笔试参考题库附带答案详解
- 纺织工程师考试常见问题解答试题及答案
- 轴承基础知识试题及答案
- 高程模型考试试题及答案
- 《人工智能原理》课件演示
- 辽宁省名校联盟2025年高三5月份联合考试语文及答案
- 2024年江西省气象部门招聘考试真题
- 2025-2030中国生物计算市场研发创新及发展前景趋势预测研究报告
- 2025年一年级分批入队闯关活动
- 民事审判培训课件
- (二模)2025年深圳市高三年级第二次调研考试历史试卷(含标准答案)
- 曳引式电梯知识培训课件
- 中国南水北调集团水网发展研究有限公司招聘笔试题库2025
- 贵港辅警考试题库2024
- 闽教版新课标三年级信息技术教案下册
- 2025企业安全培训考试试题【典优】
评论
0/150
提交评论