单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,可视化程序设计语言,II ,第二讲,C#,程序设计基础,第2章 C#程序设计根底,内容提要,本章主要分析C#的语法,C#作为.NET的原生语言,功能非常强大。,作为ASP.NET的编程根底,主要分析C#的变量、常量、控制语句,C#类的根本使用方法,C#的异常处理和C#语言面向对象的高级特性。,C#,概述,C#是微软公司专门为.NET量身定做的编程语言,它与.NET有着密不可分的关系。,C#的类型就是.NET框架所提供的类型,C#本身并无类库,而是直接使用.NET框架所提供的类库。,另外,类型平安检查、结构化异常处理也都是交给CLR处理的。因此,C#是最适合开发.NET应用的编程语言。,C#,的特点,C#不仅具有C+的强大功能,而且具有Visual Basic简单易用的特性。C#的语法与C+根本相同。如果以前对C+非常熟悉的话,学习C#那么是一件非常容易的事情。,默认情况下,C#代码在.NET框架提供的受控环境下运行,不允许直接操作内存。它带来最大的变化是C#没有了C和C+中的指针。与此相关的,那些在C+中被大量使用的指针操作符已经不再出现。C#只支持一个“.,C#程序结构,案例名称:第一个,C#,程序,程序名称:,2-01.cs,using System;,class Hello,public static void Main(),Console.WriteLine(,您好,!);,C#,编译器,.NET Framework SDK内置了C#编译器“csc.exeC Sharp Compiler,该文件在“WINNTMicrosoft.NETFrameworkv版本号目录下。,如果不能执行该命令,需要将该目录添加到操作系统的PATH变量中。可以在命令窗口编译C#文件,假设要编译名为1-01.cs的C#文件。命令行的语法为:,csc 2-01.cs,不用,using,导入名字空间,案例名称:不用,using,导入名字空间,程序名称:,2-02.cs,class Hello,public static void Main(),(,您好,!);,程序的输入和输出,案例名称:利用ReadLine()读入数据,程序名称:2-03.cs,using System;,class Hello,public static void Main(),Console.Write(“请输入你的名字:);,string str_bookName=Console.ReadLine();,Console.WriteLine(您好!0,str_bookName);,命令行参数,案例名称:使用命令行参数,程序名称:,2-04.cs,using System;,public class Hello,public static void Main(string args),Console.WriteLine(,你共有,0,个朋友,args.Length);,Console.WriteLine(,你的朋友列表为:,);,for(int i=0;iargs.Length;i+),Console.WriteLine(Arg0=1,i,argsi);,C#,注释,案例名称:使用注释,程序名称:,2-05.cs,using System;,class Hello,static void Main(),/*,声明一个,DateTime,变量,t,并将当前日期赋给,t*/,DateTime t=DateTime.Today;,string str_Time;/,声明一个字符串变量,str_Time,str_Time=t.ToLongDateString();,Console.WriteLine(,当前日期是,:0,str_Time);,C#,的数据结构,C#的数据类型分为值类型Value Type和引用类型Reference Type两大类。,值类型包括简单类型Simple Type、结构类型Struct Type和枚举类型Enum Type3种。,引用类型包括类类型Class Type、数组类型Array Type和代表类型Delegate Type。,变量和常量,C#是大小写敏感的,即大写和小写字母认为是不同的字母。例如变量名something,Something,SOMETHING都是不同的名字。,命名变量名要遵守如下的规那么:,不能是C#关键字。,第一个字符必须是字母或下划线。,不要太长,一般不超过31个字符为宜。,不能以数字开头,中间不能有空格,变量名中不能包含“.;,+-之类的特殊符号。实际上,变量名中除了能使用26个英文大小写字母和数字外,只能使用下划线“_。,变量名不要与C+中的库函数名、类名和对象名相同。,使用常量,案例名称:使用常量,程序名称:2-06.cs,using System;,class Hello,public const double PI=3.14159265;,static void Main(),Console.WriteLine(“圆周率PI的值为0,PI);,值类型,值类型,也称为简单类型,是直接由一系列元素构成的数据类型。,C#,语言中提供了一组已经定义好了简单类型。,可以分为整整类型、布尔类型、字符类型和实数类型。,整整类型,整整类型的变量的值为整数。计算机的存储单元是有限的,所以计算机语言提供的整数类型的值总是在一定的范围之内。,C#,中有九种整数类型,这些整数类型在数学上的表示以及在计算机中的取值范围如表,2-1,所示。,整整类型,整整类型,特征,取值类型,sbyte,有符号,8,位整数,-128-127,byte,无符号,8,位整数,0-255,short,有符号,16,位整数,-32768-32767,ushort,无符号,16,位整数,0-65535,int,有符号,32,位整数,-2147483648-2147483647,uint,无符号,32,位整数,0-4294967295,long,有符号,64,位整数,-9223372036854775808-9223372036854775807,ulong,无符号,64,位整数,0-18446744073709551615,使用整整类型,案例名称:使用整整类型,程序名称:,2-07.cs,using System;,class Hello,public static void Main(),short x=32766;,x+;,Console.WriteLine(x);,x+;,Console.WriteLine(x);,布尔类型,布尔类型是用来表示“真和“假的。布尔类型表示的逻辑变量只有两种取值。在C#中,分别采用true和false两个值来表示。,在C语言中,用0来表示“假,其他任何非零的值表示真。在C#中,布尔型变量只能是true或者false。,实数类型,实数在C#中采用两种数据类型来表示:单精度float和双精度double。它们的区别在于取值范围和精度不同。,单精度:取值范围在正负1.5*10-45到3.4*1038之间,精度为七位。,双精度:取值范围在正负5.0*10-324到1.7*10308之间,精度为15-16位。,字符类型,字符包括数字字符、英文字母和表达符号等等,,C#,提供的字符类型按照国际标准,采用,Unicode,字符集。一个,Unicode,的标准字符长度为,16,位,用它可以来表示世界上大多数语言。给一个变量赋值的语法为:,char mychar=M;,也可以直接通过十六进制或者,Unicode,赋值。,char mychar=x0034;/mychar=4,char mychar=u0039;/mychar=9,枚举类型,案例名称:使用枚举类型,程序名称:,2-09.cs,using System;,enum WeekDay,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,;,class Test,static void Main(),WeekDay day;/,声明,WeekDay,的实例,day;,day=WeekDay.Sunday;,Console.WriteLine(day,的值是,0,day);,引用类型,C#中的另一大数据类型是引用类型。“引用的含义是:该类型的变量不直接存储所包含的值,而是存储所要存储值的地址。,C#中的引用类型有四种:类、数组、代表和接口。,类,类是面向对象编程的根本单位,是一种包含数据成员、函数成员的数据结构。类的数据成员有变量、域和事件。函数成员包括方法、属性、构造函数和析构函数等等。类和结构同样都包含了自己的成员,但他们之间最主要在于:类是引用类型,而结构是值类型。,类支持继承机制,通过继承,派生可以扩展类的数据成员和函数方法,进而到达代码重用和设计重用的目的。,数组,案例名称:使用数组类型,程序名称:,2-10.cs,using System;,class test,static void Main(),int arr1=new int2;,int arr2=new int1,2,3;,string arr3=six,is,me;,int,arr4=1,2,3,4;,int,arr5=new int3,4;,for(int i=0;iarr1.Length;i+),arr1i=i*i*i;,Console.WriteLine(arr10=1,i,arr1i);,for(int i=0;i4;i+),for(int j=0;j=。,逻辑操作符,C#提供的逻辑运算符有三个,就是逻辑与&、逻辑或|和逻辑非!。,其中,逻辑与和逻辑或是二元操作符,要求有两个操作数;而逻辑非是一元操作符,只要求一个操作数。,分支语句,分支语句依据一个控制表达式的值,从一系列可能被执行的语句选择出要执行的语句。,包括两种语句:if语句和switch语句。,使用,if,语句,案例名称:使用,if,语句,程序名称:,2-14.cs,using System;,class Hello,public static void Main(),Console.Write(,请输入你的名字:,);,string str_userName=Console.ReadLine();,if(str_userName=six),Console.WriteLine(,您好,!0,哎呀,是您啊!,str_userName);,else,Console.WriteLine(0,是哪棵葱?,str_userName);,switch语句,案例名称:使用,switch,语句,程序名称:,2-15.cs,using System;,class Sample,public static void Main(),int myage=10;,string mystr;,switch(myage),case 10:mystr=,还是小孩,!;break;,case 25:mystr=,可以结婚了,!;break;,default:mystr=,不对吧!你到底多大!,;break;,Console.WriteLine(,小子,你,0,mystr);,循环语句,在 C#中可使用循环语句有4种格式:,do-while:当或直到条件为 True 时循环。,while:当条件为 True 时循环。,for:指定循环次数,使用计数器重复运行语句。,for each:对于集合中的每项或数组中的每个元素,重复执行。,do-while循环,案例名称:,do-while,循环,程序名称:,2-16.cs,using System;,class test,public static void Main(),int sum=0;/,初始值设置为,0,int i=1;/,加数初始值为,1,do,sum+=i;,i+;,while(i