1、C#.net程序设计第一章第一章 VisualVisualStudioStudio20052005和和C#.NETC#.NET概述概述C#.NET程序设计本章主要内容本章主要内容lVisualStudio2005.NET框架框架和和C#语言简介语言简介l使用使用VS2005创建创建C#控制台应用控制台应用程序,程序,Windows窗体应用程序窗体应用程序lC#面向对象程序主要结构:类,面向对象程序主要结构:类,对象,语句与方法等简介对象,语句与方法等简介l使用使用VS2005运行程序调试运行程序调试C#.NET程序设计VisualStudio2005VisualStudio是一套完整的开发工具
2、集,是一套完整的开发工具集,用于生成桌面应用程序、用于生成桌面应用程序、ASP.NETWeb应应用程序、移动应用程序等多种应用程序,是用程序、移动应用程序等多种应用程序,是VisualC#、C+等多种语言所共同使用的集等多种语言所共同使用的集成开发环境成开发环境(IDE)。利用此集成开发环境可以。利用此集成开发环境可以创建混合语言解决方案,为熟悉不同语言的创建混合语言解决方案,为熟悉不同语言的开发人员的编程提供极大的便利。开发人员的编程提供极大的便利。VS .NET 框架和框架和C#语言简介语言简介C#.NET程序设计NET框架(框架(Framework).NET框架是微软支持下一代应用程序的
3、内部框架是微软支持下一代应用程序的内部Windows组件。组件。.NET框架由三个主要部分组成框架由三个主要部分组成:l公共语言运行库(公共语言运行库(CLR):公共语言运行库管理内存、):公共语言运行库管理内存、线程执行、代码执行、代码安全验证、编译以及其他线程执行、代码执行、代码安全验证、编译以及其他系统服务。系统服务。l.NET框架类库框架类库:.NET框架类库提供了统一的、面向框架类库提供了统一的、面向对象的、分层的和可扩展的类库集,使用它可以方便对象的、分层的和可扩展的类库集,使用它可以方便地开发传统的命令行或图形用户界面地开发传统的命令行或图形用户界面(GUI)应用程序应用程序等多
4、种应用程序。等多种应用程序。lASP.NET:ASP.NET建立在建立在.NET框架框架的编程类的的编程类的基础上,为基础上,为Web应用程序模型提供了一组可简化应用程序模型提供了一组可简化Web应用程序生成的控件和基础结构(如应用程序生成的控件和基础结构(如Web窗体和窗体和Web服务)。服务)。VS .NET 框架和框架和C#语言简介语言简介C#.NET程序设计C#语言简介语言简介C#从从C和和C+派生而来,因为派生而来,因为C#是近期发是近期发展起来的,所以吸取了展起来的,所以吸取了C、C+,Java以及以及Delphi和和VisualBasic等语言的优点等语言的优点,并解决了并解决了
5、它们的问题。具有简单它们的问题。具有简单,强大灵活强大灵活,类型安全和类型安全和面向对象等优点面向对象等优点.C#是惟一为是惟一为.NET框架设计的框架设计的语言,能使用语言,能使用.NET框架代码库提供的每种功能。框架代码库提供的每种功能。VS .NET 框架和框架和C#语言简介语言简介C#.NET程序设计一个简单的欢迎程序。一个简单的欢迎程序。创建创建HelloWorld控制台应用程序步骤控制台应用程序步骤:略略.代码如下代码如下:其中: / 注释内容用两个斜杠表示注释的开始,直到该行的结尾注释结束。用两个斜杠表示注释的开始,直到该行的结尾注释结束。usingSystem;namespac
6、eHelloWorld/声明命名空间声明命名空间classProgram/程序开始类程序开始类staticvoidMain(stringargs)/Main方法方法/向控制台输出向控制台输出Console.WriteLine(欢迎使用欢迎使用C#.NET程序设计程序设计);编写控制台简单欢迎程序编写控制台简单欢迎程序C#.NET程序设计命名空间命名空间命名空间命名空间(Namespace)的宗旨是为各种的宗旨是为各种标识符标识符(如类名如类名)创建一个已命名的容器。创建一个已命名的容器。同名的两个类如果在不同的命名空间同名的两个类如果在不同的命名空间中,相互是不会混淆的。中,相互是不会混淆的。
7、C#.NET程序设计命名空间定义命名空间定义命名空间使用关键字命名空间使用关键字namespace声明。定义格式如下:声明。定义格式如下:namespacename.name1.type-declarations。例如例如HelloWorld项目项目Program.cs代码:代码:namespaceHelloWorldclassProgram即使未显式声明命名空间,即定义即使未显式声明命名空间,即定义class前面没有前面没有namespace,例如:,例如:classGlobalClass/系统也会为该系统也会为该GlobalClass类创建默认命名空间。类创建默认命名空间。类型的完全限定名
8、是命名空间类型的完全限定名是命名空间.类型名,例如类型名,例如Program类类的完全限定名是:的完全限定名是:HelloWorld.Program,任何类型的完全任何类型的完全限定名必须是唯一的。限定名必须是唯一的。命名空间命名空间C#.NET程序设计嵌套的类和命名空间。嵌套的类和命名空间。namespaceN1/N1classC1/N1.C1(该(该C1类的完全限定名)类的完全限定名)classC2/N1.C1.C2(该(该C2类的完全限定名)类的完全限定名)namespaceN2/N1.N2classC2/N1.N2.C2(该(该C2类的完全限定名)类的完全限定名)在此代码中使用了两次在
9、此代码中使用了两次C2类名。但是,完全限定名是唯类名。但是,完全限定名是唯一的。第一个类名在一的。第一个类名在C1内声明;因此其完全限定名是:内声明;因此其完全限定名是:N1.C1.C2。第二个类名在命名空间。第二个类名在命名空间N2内声明;因此其完内声明;因此其完全限定名是:全限定名是:N1.N2.C2。命名空间命名空间C#.NET程序设计使用命名空间使用命名空间访问一个类型有两种方法:使用该类型的完全限定访问一个类型有两种方法:使用该类型的完全限定名和不使用完全限定名。名和不使用完全限定名。l使用该类型的完全限定名,例如使用该类型的完全限定名,例如Console类是类是System命名空间
10、的,使用命名空间的,使用Console类的方法类的方法WriteLine来输出消息到屏幕的代码如下:来输出消息到屏幕的代码如下:System.Console.WriteLine(欢迎使用欢迎使用C#);l不使用完全限定名:不使用完全限定名:大多数大多数C#应用程序从一个应用程序从一个using指令节开始,即指令节开始,即使用使用using关键字关键字+命名空间列出应用程序将会频繁使命名空间列出应用程序将会频繁使用的命名空间,避免每次使用其中包含的方法时都要用的命名空间,避免每次使用其中包含的方法时都要指定完全限定的名称。通过在程序开头包括行:指定完全限定的名称。通过在程序开头包括行:using
11、System;程序中可以使用程序中可以使用Console类的不完全类的不完全限定名,而无需使用完全限定名限定名,而无需使用完全限定名System.Console。代码如下:代码如下:Console.WriteLine(欢迎使用欢迎使用C#);命名空间命名空间C#.NET程序设计命名空间与程序集命名空间与程序集l程序集程序集(assembly)是包含是包含.NET框架或其他开发者框架或其他开发者所写的代码库。某些情况下,一个命名空间中的所写的代码库。某些情况下,一个命名空间中的类存储在同名的一个程序集类存储在同名的一个程序集(如如System命名空间存命名空间存储在储在System.dll程序集
12、程序集),而有的程序集容纳了多,而有的程序集容纳了多个命名空间。使用一个命名空间的类型时,还需个命名空间。使用一个命名空间的类型时,还需要引用包含了该命名空间的程序集(以要引用包含了该命名空间的程序集(以.exe或或.dll为后缀的文件)。为后缀的文件)。l在在“解决方案资源管理器解决方案资源管理器”中,展开中,展开HelloWorld项目的项目的“引用引用”节点,可以看到这项目引用节点,可以看到这项目引用System,System.Data等等3个程序集,这是新建个程序集,这是新建一个项目时自动添加。可以用鼠标右击一个项目时自动添加。可以用鼠标右击“引用引用”节点来添加新的程序集。节点来添加
13、新的程序集。命名空间命名空间C#.NET程序设计Windows窗体应用程序窗体应用程序l在前面创建的在前面创建的HelloWorld解决方案中解决方案中添加一个添加一个Windows窗体应用程序项目窗体应用程序项目步骤:步骤:略略l使用可视化设计界面向使用可视化设计界面向Windows窗体窗体Form1添加添加3个控件,如图。个控件,如图。创建Windows窗体应用程序 C#.NET程序设计添加按钮执行代码添加按钮执行代码双击窗体上的双击窗体上的“确定确定”按钮。随后,会在按钮。随后,会在“代码和文代码和文本编辑器本编辑器”窗口中打开窗口中打开Forml.cs源代码文件源代码文件,在在Form
14、l类类中自动添加了一个名为中自动添加了一个名为btnOK_Click的方法。的方法。在在btnOK_Click方法中输入以下方法中输入以下MessageBox语句。语句。完成后的方法应该像下面这样:完成后的方法应该像下面这样:privatevoidbtnOk_Click(objectsender,EventArgse)MessageBox.Show(您好!您好!+txtUserName.Text);以上代码中以上代码中MessageBox是是System.Windows.Forms的类,它有个静态方法的类,它有个静态方法Show,用来弹出一个消息框显示方法中参数值,这里是显示用来弹出一个消息框
15、显示方法中参数值,这里是显示您您好!好!+txtUserName.Text(即文本框输入的用户名)。(即文本框输入的用户名)。创建Windows窗体应用程序 C#.NET程序设计C#面向对象程序主要结构面向对象程序主要结构lC#是面向对象语言,对象是给定数据类型的实例,是面向对象语言,对象是给定数据类型的实例,一个整数一个整数(如如10)是整数类型的的实例。面向对象最是整数类型的的实例。面向对象最重要的类型是类(重要的类型是类(class),主要有两种形式的主要有两种形式的类:类:.Net框架提供的庞大的类库和用户为实现应用框架提供的庞大的类库和用户为实现应用程序功能自定义的类。程序功能自定义
16、的类。l类是由数据成员和方法成员构成,类是由数据成员和方法成员构成,C#程序主要由程序主要由类和对象组成。下面通过计算圆面积的程序来说类和对象组成。下面通过计算圆面积的程序来说明面向对象明面向对象C#程序的主要结构,运行机制。程序的主要结构,运行机制。C#.NET程序设计编写计算圆面积的程序编写计算圆面积的程序编写根据输入半径编写根据输入半径r计算圆面积的控计算圆面积的控制台应用程序,根据通过控制台输入半制台应用程序,根据通过控制台输入半径,计算并显示该半径径,计算并显示该半径r的圆面积。的圆面积。创建新项目创建新项目CircleArea,将,将Program.cs的源文件的内容替换为下面的源
17、文件的内容替换为下面的代码:的代码:面向对象面向对象C#程序主要结构简介程序主要结构简介using System;/程序使用的命名空间(程序使用的命名空间(Console类所在的命名空间)类所在的命名空间)namespace CircleArea/MyCircle类所属的命名空间类所属的命名空间CircleArea class MyCircle double circleR;/字段半径字段半径 public MyCircle(double dblR)/构造函数构造函数 circleR = dblR;/初始化字段半径初始化字段半径 public double CircleArea()/计算圆面积
18、实例方法计算圆面积实例方法 double dblArea = Math.PI * circleR * circleR;/赋值语句赋值语句 return dblArea; public static double StaticCircleArea(double dblR)/计算圆面积计算圆面积 double dblArea = Math.PI * dblR * dblR; return dblArea; class Test static void Main()/程序运行入口主函数程序运行入口主函数 double r;/声明局部变量声明局部变量 Console.WriteLine(请输入圆半径:
19、请输入圆半径:); string strInput = Console.ReadLine();/调用类调用类Console静态方法静态方法 r = double.Parse(strInput); /字符串类型转为实数字符串类型转为实数double类型类型 MyCircle aCircle = new MyCircle(r);/创建创建MyCircle对象对象(实例实例) /通过实例调用计算圆面积实例方法通过实例调用计算圆面积实例方法 double aArea = aCircle.CircleArea(); Console.WriteLine(半径半径0的面积的面积=1, r, aArea);
20、/通过通过MyCircle类调用计算圆面积静态方法类调用计算圆面积静态方法 aArea = MyCircle.StaticCircleArea(r); Console.WriteLine(半径半径0的面积的面积=1, r, aArea); C#.NET程序设计C#程序的构成程序的构成l项目项目CircleArea的的Program.cs代码代码定义了两个类定义了两个类(class)MyCircle和和Test,其中类,其中类MyCircle定义半径的定义半径的数据字段和三个方法,类数据字段和三个方法,类Test只定只定义了一个入口主函数义了一个入口主函数Main。面向对象面向对象C#程序主要结
21、构简介程序主要结构简介C#.NET程序设计Program.cs代码说明:代码说明:lusingSystem;语句可以简化语句可以简化System命名空间命名空间类的使用,无需使用类的使用,无需使用System命名空间命名空间Console类的完全限定名。类的完全限定名。lnamespaceCircleArea;表示大括号中定义表示大括号中定义的类型属于命名空间的类型属于命名空间CircleArea。因此可以看出。因此可以看出命名空间命名空间CircleArea包含包含MyCircle和和Test类。类。lclassTest定义了定义了Test类,类,Test类包含方法类包含方法staticvo
22、idMain(),它定义了程序运行入,它定义了程序运行入口主函数,应用程序从口主函数,应用程序从Main()主函数开始执行。主函数开始执行。面向对象面向对象C#程序主要结构简介程序主要结构简介C#.NET程序设计Program.cs代码说明代码说明lclassMyCircle定义了定义了MyCircle类,类主要由数类,类主要由数据和方法组成,其中:据和方法组成,其中:double circleR;语句定义了用于存放半径的数据字段。public MyCircle(double dblR)定义了构造函数,与类名相同的方法是构造函数。public static double StaticCircl
23、eArea(double dblR)在MyCircle类中定义了静态方法StaticCircleArea。方法有静态方法与实例方法,使用static定义的是静态方法,否则是实例方法。public double CircleArea()在MyCircle类中定义了实例方法CircleArea()。面向对象面向对象C#程序主要结构简介程序主要结构简介C#.NET程序设计方法定义和调用 方法是包含一系列语句的代码块。每个语句执行指令都是在方法中完成的。程序的方法不能单独存在,一般是在类或结构中声明,声明时需要指定访问级别、返回值、方法名称以及任何方法参数。方法参数放在括号中,并用逗号隔开。空括号表示
24、方法不需要参数。面向对象面向对象C#程序主要结构简介程序主要结构简介C#.NET程序设计MyCircle类的实例方法CircleArea定义如下:public double CircleArea()/计算圆面积实例方法 double dblArea = Math.PI * circleR * circleR;/赋值语句 return dblArea;定义CircleArea方法的第一行具有以下含义:l指定访问级别是public,表示其他对象(如Test类)可以访问该方法。l返回值的数据类型是double双精度数值类型。l方法名是CircleAreal方法不需要参数。面向对象面向对象C#程序主要
25、结构简介程序主要结构简介C#.NET程序设计方法CircleArea定义:大括号大括号内是方法体,既方法的内容。其中内是方法体,既方法的内容。其中ldoubledblArea=Math.PI*circleR*circleR;说明如下:说明如下:lMath.PI是是System.Math类的静态公共字段表示类的静态公共字段表示圆的周长与其直径的比值圆的周长与其直径的比值。l表达式表达式Math.PI*circleR*circleR是根据是根据circleR半径数据字段值计算圆面积。半径数据字段值计算圆面积。l声明声明double类型的变量类型的变量dblArea并将计算圆面积并将计算圆面积结果赋
26、值給结果赋值給dblArea。l语句语句returndblArea;是将是将dblArea变量中圆面积变量中圆面积返回调用方法的对象。返回调用方法的对象。面向对象面向对象C#程序主要结构简介程序主要结构简介C#.NET程序设计静态方法静态方法StaticCircleAreaMyCircle类的静态方法类的静态方法StaticCircleArea,除,除了是了是static静态方法和具有方法参数静态方法和具有方法参数double类型类型dblR外,其它均与方法外,其它均与方法CircleArea,定义如下:,定义如下:publicstaticdoubleStaticCircleArea(doub
27、ledblR)/计算圆面积静计算圆面积静态方法态方法静态方法与实例方法区别是使用静态方法与实例方法区别是使用static定义,定义,调用静态方法使用类而非实例,因而无需创建实调用静态方法使用类而非实例,因而无需创建实例,如例,如MyCircle.StaticCircleArea(r),而调用实,而调用实例方法必须先创建该类实例。例方法必须先创建该类实例。面向对象面向对象C#程序主要结构简介程序主要结构简介C#.NET程序设计MyCircle类的构造函数类的构造函数lMyCircle类的构造函数定义如下:类的构造函数定义如下:publicMyCircle(doubledblR)circleR=d
28、blR;/初始初始化字段半径化字段半径构造函数是一个与类同名的方法,是创建类的实例时调用,构造函数是一个与类同名的方法,是创建类的实例时调用,使用使用new关键字关键字+构造函数创建类的实例,例如:构造函数创建类的实例,例如:MyCircleaCircle=newMyCircle(5);/aCircle是是MyCircle类的实例类的实例l该语句是将该语句是将5作为参数调用作为参数调用MyCircle类构造函数,构造类构造函数,构造函数将函数将5传递给传递给dblR,然后执行赋值语句,然后执行赋值语句circleR=dblR;数据字段数据字段circleR赋值为赋值为5,执行构造函数后就返回所
29、创建,执行构造函数后就返回所创建的的MyCircle实例实例aCircle。因此实例。因此实例aCircle的半径数据字的半径数据字段段circleR为为5,通过,通过aCircle实例可以调用实例方法实例可以调用实例方法aCircle.CircleArea();该方法使用实例该方法使用实例aCircle的的circleR(值(值5)计算圆面积。)计算圆面积。l注意:如果注意:如果CircleArea方法不指定访问级别方法不指定访问级别public,默,默认是认是private,aCircle.CircleArea()将无法执行。将无法执行。面向对象面向对象C#程序主要结构简介程序主要结构简介
30、C#.NET程序设计Test类类Test类中有一个程序运行入口主函数类中有一个程序运行入口主函数staticvoidMain(),应用程序从,应用程序从Main()主函数开始执行。主函数开始执行。Main()方法的主要语句说明如下:方法的主要语句说明如下:lstringstrInput=Console.ReadLine();调用类调用类Console静态方法静态方法ReadLine()来获取键盘输入的半来获取键盘输入的半径,输入数值按回车后,径,输入数值按回车后,ReadLine()方法返回字符方法返回字符串类型的值给变量串类型的值给变量strInput。lr=double.Parse(str
31、Input);使用使用double.Parse方法将字符串变量方法将字符串变量strInput转为实数转为实数double类型,赋类型,赋给给double类型变量类型变量r。lMyCircleaCircle=newMyCircle(r);使用使用r参数参数调用构造函数创建调用构造函数创建MyCircle实例,通过构造函数将实例,通过构造函数将r赋值实例的半径字段赋值实例的半径字段circleR。面向对象面向对象C#程序主要结构简介程序主要结构简介C#.NET程序设计Test类类lConsole.WriteLine(半径半径0的面积的面积=1,r,aArea);语句将语句将r替换替换0,aAre
32、a替换替换1,如果半径为如果半径为10,则将在屏幕显示,则将在屏幕显示“半径半径10的面积的面积=314.159265358979”。ldoubleaArea=aCircle.CircleArea();调用调用CircleArea实例方法,它根据实例半径字段实例方法,它根据实例半径字段circleR计算圆面积,并将其返回计算圆面积,并将其返回aArea。laArea=MyCircle.StaticCircleArea(r);该语句是该语句是调用调用MyCircle类的静态方法类的静态方法StaticCircleArea,调,调用静态方法使用类名(这里是用静态方法使用类名(这里是MyCircle
33、),不能使),不能使用实例名用实例名aCircle调用。调用。l入口主函数入口主函数Main()静态方法是程序的运行开始的第静态方法是程序的运行开始的第一个方法一个方法,程序随着程序随着Main()方法结束而结束。方法结束而结束。面向对象面向对象C#程序主要结构简介程序主要结构简介C#.NET程序设计程序调试程序调试程序调试过程分为两步。程序调试过程分为两步。l首先,纠正编译时错误。这些错误可首先,纠正编译时错误。这些错误可以包含不正确的语法、拼错的关键字以包含不正确的语法、拼错的关键字和键入不匹配。和键入不匹配。l纠正编译语法错误后,接下来,使用纠正编译语法错误后,接下来,使用调试器检测并纠
34、正在运行时检测到的调试器检测并纠正在运行时检测到的逻辑错误和语义错误等问题。逻辑错误和语义错误等问题。C#.NET程序设计使用调试器运行调试程序使用调试器运行调试程序程序调试程序调试l程序运行可采用程序调试运行或不调试运程序运行可采用程序调试运行或不调试运行。行。l从从“调试调试”菜单中选择菜单中选择“开始执行(不调开始执行(不调试)试)”或按或按Ctrl+F5,将不调试地运行程序。将不调试地运行程序。l从从“调试调试”菜单中选择菜单中选择“启动调试启动调试”(或(或按按F5)、)、“逐语句逐语句”(或(或F11)或)或“逐过逐过程程”(或(或F10)等方法可以开始程序调试)等方法可以开始程序
35、调试运行。运行。C#.NET程序设计查看调试器中的数据查看调试器中的数据l使用数据提示功能,在程序运行中断模式下的源使用数据提示功能,在程序运行中断模式下的源窗口中,将鼠标指针置于当前范围内的任何变量窗口中,将鼠标指针置于当前范围内的任何变量上。屏幕上显示数据提示。如果要继续监视某个上。屏幕上显示数据提示。如果要继续监视某个变量,可以从数据提示中将该变量添加到变量,可以从数据提示中将该变量添加到“监视监视”窗口。查看数据提示时,用鼠标右击,然后在快窗口。查看数据提示时,用鼠标右击,然后在快捷菜单中单击捷菜单中单击“添加监视添加监视”。变量即添加到。变量即添加到“监监视视”窗口中。窗口中。l使用
36、调试器变量窗口,在中断执行时,可以检查使用调试器变量窗口,在中断执行时,可以检查值,修改变量,或检查程序状态。从值,修改变量,或检查程序状态。从“调试调试”菜菜单中选择单中选择“窗口窗口”,然后选择要显示的变量窗口,然后选择要显示的变量窗口的名称,它们是的名称,它们是“自动自动”、“局部变量局部变量”、“监监视视”。在在“监视监视”窗口中,在窗口中,在“名称名称”列可以列可以添加需要的变量或表达式。添加需要的变量或表达式。程序调试程序调试C#.NET程序设计C#Windows应用程序应用程序控件名称 属 性属性值Label (标签控件)Text“输入园半径:”Label(标签控件)Text“园
37、面积:”Lable (标签控件)Name,Text,AutoSize,BackColor“lblArea”,“”“true”, “info”TextBox(文本框控件)Name“txtR”Button(按钮控件)Name,Text“btnCompute “, 开始计算园面积C#.NET程序设计添加计算圆面积的添加计算圆面积的MyCircle类类添加类,将名称设为添加类,将名称设为MyCircle.csusingSystem;namespaceCircleAreaWclassMyCircledoublecircleR;/字段半径字段半径publicMyCircle(doubledblR)/构造函
38、数构造函数circleR=dblR;/初始化字段半径初始化字段半径publicdoubleCircleArea()/计算圆面积实例方法计算圆面积实例方法doubledblArea=Math.PI*circleR*circleRreturndblArea;C#Windows应用程序应用程序C#.NET程序设计添加添加Windows控件处理事件控件处理事件l在在Form1设计窗口中双击设计窗口中双击“计算园面积计算园面积”按钮,添加计按钮,添加计算园面积处理代码如下:算园面积处理代码如下:privatevoidbtnCompute_Click(objectsender,EventArgse)dou
39、bler;/声明局部变量声明局部变量r=double.Parse(txtR.Text);/字符串类型转换为实数字符串类型转换为实数double类型类型MyCircleaCircle=newMyCircle(r);/创建创建MyCircle对对象象(实例实例)/通过实例调用计算圆面积实例方法通过实例调用计算圆面积实例方法doubleaArea=aCircle.CircleArea();lblArea.Text=aArea.ToString(f4);/实数实数double类型类型转换为字符串类型转换为字符串类型C#Windows应用程序应用程序第二章第二章 数据类型、变量和表数据类型、变量和表达式
40、达式C#.net程序设计C#.NET程序设计本章主要内容本章主要内容l值类型(整数类型,布尔类型,字值类型(整数类型,布尔类型,字符类型,实数类型,枚举类型,结符类型,实数类型,枚举类型,结构类型)构类型)l引用类型引用类型(类类,数组数组,Delegate委委托托,interface接口接口)l类型转换类型转换(隐式类型转换隐式类型转换,显式类型转显式类型转换换)和和Convert类类l装箱和拆箱装箱和拆箱l变量和常量变量和常量l表达式和操作符表达式和操作符C#.NET程序设计值类型值类型l值类型可以分为简单类型、结构值类型可以分为简单类型、结构类型和枚举类型。简单类型又可类型和枚举类型。简
41、单类型又可分为整数类型、布尔类型、字符分为整数类型、布尔类型、字符类型和实数类型。类型和实数类型。C#.NET程序设计整数、实数、字符和布尔类型整数、实数、字符和布尔类型l整数类型:整数类型:sbyte、byte、short、ushort、int、uint、long、ulong和和char。l布尔类型布尔类型bool:表示的逻辑变量,只有两种取值:表示的逻辑变量,只有两种取值:“真真”或或“假假”,采用,采用“true”和和“false”两个值两个值来表示。来表示。l字符类型包括数字字符、英文字母和表达符号等。字符类型包括数字字符、英文字母和表达符号等。l实数类型包括浮点类型和十进制类型:实数
42、类型包括浮点类型和十进制类型:l浮点类型包括单精度类型(浮点类型包括单精度类型(float)型和双精度类)型和双精度类型(型(double)。)。l十进制类型(十进制类型(decimal):十进制类型适合应用在十进制类型适合应用在不能接受舍入误差的计算中。不能接受舍入误差的计算中。值类型值类型C#内置类型.NET 类型. 描述boolSystem.Boolean该类型仅有两个可能取值:true 和false 。例如,bool blnA = true; 默认值为 false。byteSystem.Byte表示无符号8位整数,取值范围:0255。例如,byte byteA = 255; 默认值为0
43、。sbyteSystem.SByte表示8位整数,取值范围:-128 到 127。默认值为0。charSystem.Char表示一个Unicode 字符(16位),取值:U+0000U+FFFF。可以采用多种不同的赋值格式,例如下面的语句。char MyChar = X;char MyChar =x0058;char MyChar =(char)88;char MyChar =u0058; 默认值为”0” decimalSystem.Decimal表示一个128位的数值,取值范围:1.0e-287.9e28 ,精确度:2829位小数。例如,decimal MyMoney=100.5m;后缀m或
44、M表示decimal数值,如果没有这个后缀,则该数值被认为是double数值。默认值为0.0M。doubleSystem.Double表示一个64位浮点数,取值范围:5.0e-3241.7e308;精度:1516位小数。默认值为0.0D(D或d为double类型的后缀)floatSystem.Single表示一个32位浮点数,取值范围:1.5e-453.4e38,精度:7位小数。默认值为0.0F。intSystem.Int32表示一个32位整数,取值范围:-2 147 483 6482 147 483 647,默认值为0。uintSystem.UInt32表示一个32位无符号整数,取值范围04
45、 294 967 295。默认值为0。longSystem.Int64表示一个64位整数,取值范围:9 223 372 036 854 775 8089 223 372 036 854 775 807。默认值为0。ulongSystem.UInt64表示一个64位无符号整数,取值范围:018 446 744 073 709 551 615。默认值为0。shortSystem.Int16表示一个16位整数,取值范围:-32 76832 767。默认值为0。ushortSystem.UInt16表示一个16位无符号整数,取值范围:065535。默认值为0。C#.NET程序设计结构类型结构类型把一系
46、列相关的变量组织成为一个单一实体的类把一系列相关的变量组织成为一个单一实体的类型称为结构类型,每一个变量称为结构的成员。例如型称为结构类型,每一个变量称为结构的成员。例如将一个点的将一个点的x坐标和坐标和y坐标组成一个点结构类型。结坐标组成一个点结构类型。结构是使用构是使用struct关键字定义的,定义一个点结构类型关键字定义的,定义一个点结构类型point的代码如下的代码如下:structpointpublicintx,y;/定义字段定义字段publicpoint(intp1,intp2)/定义构造函数定义构造函数x=p1;y=p2;值类型值类型C#.NET程序设计结构的默认构造函数结构的默
47、认构造函数l系统自动生成结构的默认构造函数(不带系统自动生成结构的默认构造函数(不带参数的构造函数)参数的构造函数),不能手工定义,默认构不能手工定义,默认构造函数对结构的所有成员赋予其类型的默造函数对结构的所有成员赋予其类型的默认值。对认值。对point系统自动生成如下默认构造系统自动生成如下默认构造函数。函数。publicpoint()x=0;y=0;值类型值类型C#.NET程序设计创建结构实例的三种方法:创建结构实例的三种方法:lpointa;/第一种第一种:没使用没使用new未初始,不未初始,不使用构造函数。使用构造函数。a不赋值不能使用不赋值不能使用a.x=3;a.y=4;lpoin
48、tb=newpoint(3,4);/第二种第二种:使用用使用用户定义构造函数户定义构造函数lpointc=newpoint();/第三种第三种:使用默认使用默认构造函数构造函数c.x=0,c.y=0Console.WriteLine(0,1,b.x,b.y);值类型值类型C#.NET程序设计枚举类型枚举类型l枚举(枚举(enum)类型由一组命名常数组成,这组)类型由一组命名常数组成,这组命名常数称为枚举列表;每一个枚举类型都具有命名常数称为枚举列表;每一个枚举类型都具有一个底层基本类型。底层基本类型必须是内置的一个底层基本类型。底层基本类型必须是内置的有符号或无符号整数类型(如有符号或无符号整
49、数类型(如Int16、Int32或或Int64)。枚举元素的默认类型为)。枚举元素的默认类型为int,并且在默,并且在默认情况下,第认情况下,第1个元素的值为个元素的值为0,后续的元素依,后续的元素依次递增次递增1。例如,在下面的枚举变量。例如,在下面的枚举变量color中,中,Red=0、Green=1,依次类推。,依次类推。lenumcolorRed,Green,Blue,White,Black;l在声明枚举变量时还可以指定底层的基本类型,在声明枚举变量时还可以指定底层的基本类型,例如下面的语句,指定例如下面的语句,指定long为底层的基本类型。为底层的基本类型。lenumRange:lo
50、ngMax=2147483648L,Min=255L;值类型值类型/指定枚举的底层类型为long,并为枚举的各个元素指定值Flags/表示该枚举可以进行|或运算组合enum Range : long Min = 255L, MinNext, Max = 2147483648L ;public class EnumTest/使用长整数枚举 public static void Main() Range a = Range.Min | Range.MinNext; long x = (long) Range.Max; long y = (long) Range.Min; long z = (lon