C#程序设计.ppt

上传人:s****8 文档编号:82820725 上传时间:2023-03-26 格式:PPT 页数:59 大小:159KB
返回 下载 相关 举报
C#程序设计.ppt_第1页
第1页 / 共59页
C#程序设计.ppt_第2页
第2页 / 共59页
点击查看更多>>
资源描述

《C#程序设计.ppt》由会员分享,可在线阅读,更多相关《C#程序设计.ppt(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C#程序设计语言程序设计语言学习内容学习内容oC#语言概述o基本语法 o数组 o控制语句 o面向对象设计 nencapsulationninheritancenpolymorphism C#语言概述oC#语言是微软公司设计的一种编程语言,是从C和C+派生来的一种简单、现代、面向对象和类型安全的编程语言。o作为一种完全面向对象的语言,要牢记在C#里,任何事物都是类和对象,甚至可以把一些简单类型如整型当作某个对象。oC#是一种对大小写敏感的语言o对于私有变量的定义一般都以小写字母开头、而公共变量的定义则以大写字母开头C#语言概述o在一个开发语言中,注释也是非常重要。C#提供了两种注释的类型:1.第

2、一种是:单行注释,注释符号是“/”,例如:int a;/一个整型变量,存储整数 2.第二种是:多行注释,注释符号是“/*”和“*/”,任何在符号“/*”和“*/”之间的内容都会被编译器忽略,例如:/*一个整型变量,存储整数*/int a;3.XML注释符号“/”也可以用来对C#程序进行注释,例如:/一个整型变量 /存储整数 int a;C#语言概述o每一句C#程序都要以语句终止符来终结,C#的语句终止符是“;”。例如:int a;o在C#程序中,可以在一行中写多个语句,但每个语句都要以“;”结束,也可以在多行中写一个语句,但要在最后一行中以“;”结束。例如:int a;string s;flo

3、at f;/一行中多个语句o语句块 在C#程序中,把用符号“”和“”包含起来的程序称为语句块。语句块在条件和循环语句中经常会用到,主要是把重复使用的程序语句放在一起以方便使用,这样有助于程序的结构化。基本语法 o语法是一种程序语言最基本的定义规范,只要按照语法给出的规则才能编写出正确的程序。oC#程序基本语法包括:数据类型的种类,变量和常量的声明和使用以及语句的基本组成表达式和运算符。oC#的数据类型包括值类型、引用类型和指针类型。指针类型是不安全类型,一般不推荐使用。数据类型汇总 字符类型 值 类 型数据类型 引用类型 sbyte byte short ushort int uint lon

4、g 类(class)委托(delegate)数组(array)接口(interface)简单类型 结构类型 枚举类型 整数类型 布尔类型 实数类型 Floatdoubledecimalz基本语法o值类型包括简单类型(如字符型、浮点型和整数类等)、枚举类型和结构类型。所有的值类型都隐含地声明了一个公共的无参数的构造函数,这个构造函数返回一个初始为零的值类型的实例。例如,对于字符型,默认值是“x0000”;对于float,默认值是0.0F。(1)简单类型:它是C#预先定义的结构类型,简单类型用关键字定义,这些关键字仅仅是在System命名空间里预定义的结构类型的化名,比如关键字int对应Syste

5、m.Int32。简单类型以下的数据类型:sbyte:字节型,-128到127 short:短整型,-32768到32767 int:整型,-2147483648到2147483647 long:长整型,-9.2e18到9.2e18 float:浮点型,-3.4e38到3.4e38 double:双精度浮点型,-1.8e308到1.8e308 char:字符型 bool:布尔型true或flase 基本语法 (2)集合类型:它是C#中一种轻量级的值类型,用来表达一组特定的值的集合行为,以enum关键字进行声明。(3)结构类型:它是用来封装小型的相关变量组,把它们封装成一个实体来同一使用,以str

6、uct关键字进行声明。基本语法o引用类型包括类类型、对象类型、字符串类型、接口类型、委托类型和数组类型等。o引用类型与值类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量把它们的引用存储在对象中。o引用类型:(1)字符串类型:直接从object中继承而来的密封类。String类型的值可以写成字符串文字的形式。例如:”123”、”hello world”是字符串类型。基本语法 (2)接口类型:一个接口声明一个只有抽象成员的引用类型,接口仅仅存在方法标志,但没有执行代码,以关键字interface进行声明。(3)委托类型:委托引用一种静态的方法或对象实例,引用该对象的实例方法,与c/c+

7、中的指针类似,以关键字delegate进行声明。基本语法o变量,就是在程序的运行过程中其值可以被改变的量,变量的类型可以是任何一种C#的数据类型。o所有值类型的变量具有实际存在于内存中的值,也就是说当将一个值赋给变量是执行的是值拷贝操作。o变量的定义格式为:1.变量数据类型 变量名(标识符);含义是声明了一个变量,并没有对变量进行赋值,此时变量使用默认值。2.变量数据类型 变量名(标识符)变量值;含义是声明定义变量的同时对变量进行了初始化,变量值应该和变量数据类型一致 基本语法o常量,就是在程序的运行过程中其值不能被改变的量。o常量的类型也可以是任何一种C#的数据类型。o常量的定义格式为:co

8、nst 常量数据类型 常量名(标识符)常量值;o“常量值”的类型要和常量数据类型一致,如果定义的是字符串型,“常量值”就应该是字符串类型,否则会发生错误。例如:1.const double PI=3.1415926;/定义了一个double类型的常量 2.const string VERSION=Visual Studio 2008;/定义了一个字符串型的常量基本语法o表达式是可以运算的代码片段,表达式可以包括运算符、方法调用等,表达式是程序语句的基本组成部分,例如:1.int num=5;/定义一个整型变量num,并对其赋值 2.string str=“你好,世界!”;/定义一个字符串变量,

9、并对其赋值o运算符是数据运算的术语和符号,它接受一个或多哥称为操作数的表达式作为输入并返回值。C#中的运算符非常的多,从操作数上划分运算符大致分为3类:1.一元运算符:处理一个操作数,只有几个一元运算符。2.二元运算符:处理两个操作数,大多数运算符都是二元运算符。3.三元运算符:处理三个操作数,只有一个三元运算符。基本语法o从功能上划分,运算符主要分为:算术运算符,赋值运算符,关系运算符,条件运算符,位运算符和逻辑运算符。例如:1.i+;/一元运算,变量i自动加1 2.num=2+3;/二元运算,变量num等于2加3的和 3.result=a b?100:-10 /三元运算,条件运算符,根据条

10、件的真假来决定运算的正确性 o表达式中的运算符按照运算符优先级的特定顺序计算 基本语法o数组是包含若干个相同类型数据的集合,数组的数据类型可以是任何类型。数组可以是一维的,也可以是多维的。o数组的维数决定了相关数组元素的下标数,一维数组只有一个下标。o一维数组通过声明方式如下:数组类型 数组名;声明方式说明:数组类型”是数组的基本类型,一个数组只能有一个数据类型。数组的数据类型可以是任何类型,包括前面介绍的枚举和结构类型。基本语法o数组声明以后,就可以对数组进行初始化了,数组必须在访问之前初始化。o数组的初始化有两种方式:第一种是在声明数组的时候进行初始化;第二种是使用new关键字进行初始化。

11、o数组中的所有元素值都可以通过数组名和下标来访问,数组名后面的方括号中指定下标。数组的第一个元素的下标是0,第二个元素的下标是1,依此类推。例如:1.int vector=80,90,100,66;/定义并初始化了一个有四个元素的数组vector 2.vector2=99;/使用vector 2访问该数组的第3个元素 基本语法o多维数组有多个下标,例如二维数组和三维数组声明的语法分别为:1.数组类型 ,数组名;2.数组类型 ,数组名;o多维数组可以在声明的时候初始化,也可以使用new关键字进行初始化。o初始化时数组的每一行值都使用括号包括起来,行与行间用逗号分隔。o要访问多维数组中的每个元素,

12、只需指定它们的下标,并用逗号分隔开.。例如;1.int,mypoint=0,1,2,3,6,9;/声明并初始化了一个3*2的二维数组 2.int mypoint=new int32 0,1,2,3,6,9;/使用new关键字进行初始化 3.int num=mypoint0,1 /访问mypoint数组第一行中的第2列数组元素 C#还定义了一个基本的类string,表示一个Unicode字符序列,专门用于对字符串的操作。同样,这个类也是在.Net框架结构的预定义的名字空间System中定义的,是类System.String的别名。字符串在实际中应用非常广泛,利用string类中封装的各种内部操作

13、,可以很容易完成对字符串处理。比如:string str1=How+are you?;/“+”运算符用于连接字符串 char c=Hello World!2;/“”运算符可以访问string中的个别字符,c=e string str1=Nice to meet you!;string str2=“Nice to meet you!”;/字符串的另一种表示形式,用引起来。(两种表示方式区别?)bool b=(string 1=string2);/“=”运算符用于两个字符串比较,b=?string类 特殊引用类型控制语句 o语句是程序的基本组成部分,正是一句句语句组成了程序。在C#中,除了单行语句

14、外,还有一些复杂的语句,用来帮助完成比较复杂逻辑程序。o条件语句 条件语句通过判断条件是否为真来执行相应的语句块。在C#中,有两种形式的的条件语句结构:if语句和switch语句。1if语句 if语句的语法如下:if(条件)执行的语句;else 执行的语句;控制语句oif语句根据条件的真假来执行相应的语句块,如果条件为真,则执行if语句块,若为假,则执行else语句块。oif语句还有几个变化的结果形式,可以单独使用if语句,而不加else语句,如果有多个条件需要判断,也可以通过添加else if语句。控制语句 2.switch语句根据对应的条件来执行相应的语句块,主要用于需要判断的条件情况比较

15、多情况。switch语句结构形式如下:switch case 条件1:执行的语句;break;case 条件n:执行的语句;break;default:执行的语句;break;控制语句oC中的循环语句有四种:do-while循环,while循环,for循环和foreach循环。1.do-while循环 do-while语句根据其布尔表达式的值有条件的执行它的嵌套语句一次或者多次,程序从会首先执行一次循环代码,然后判断布尔表达式的值,如果值为true就从do语句位置开始重新执行循环代码,一直到布尔表达式的值为false。其语法定义如下:do 循环代码 while(布尔表达式);控制语句 2.wh

16、ile循环 while循环非常类似于do-while循环,二者有一个重要的区别:while循环中的布尔测试是在循环开始时进行,而do-while循环是在最后检测。其语法定义如下:while(布尔表达式)循环代码 控制语句 3.for循环 for循环是最常用的一种循环语句,这类循环可以执行指定的次数.首先计算列初始表达式的值,接下来当条件成立时,执行其嵌套语句,之后计算重复表达式的值并根据其值决定下一步的操作。for循环的语法定义如下:for(循环变量初始化;循环条件;循环操作)循环代码 控制语句 4.foreach循环 foreach语句列举出一个集合(collection)中的所有元素,使用

17、括号中的类型和标识符用来声明该语句的循环变量,并执行关于集合中每个元素的嵌套语句。foreach语句的语法定义如下:foreach(类型 标识符 in 表达式)循环代码 控制语句o跳转语句:进行无条件跳转,C#为此提供了如下五个语句:1.break语句:终止并跳出循环,用于跳出包含它的switch,while,do,for或者foreach语句。2.continue语句:终止当前的循环,重新开始一个新的循环。3.goto语句:跳转到指定的位置,建议不要使用goto语句,因为该语句可能会破坏程序的结构性。4.return语句:跳出循环及其包含的函数5.throw语句:抛出一个异常o异常是程序执行

18、过程中出现的正常事件,是程序所遇到的轻微错误,即各种意外情况,可以写代码来处理异常并继续程序执行,而不是让程序中断。o常见的异常包括用户错误的输入、内存不足、磁盘读写错误、网络连接失败或资源不可用等等。异常处理异常处理o方式一try语句块catch(数据类型 标识符)/可以有0个1个或多个catch语句语句块.finally语句块o方式二try语句块catch(数据类型 标识符)/可以有多个catch语句语句块.try catch finally语句语法格式语句语法格式面向对象设计 o面向对象的程序设计(OOP:Object-Oriented Programming)是一种基于结构分析的、以数

19、据为中心的程序设计方法。o其主要思想是将数据及处理这些数据的操作都封装(Encapsulation)到一个称为类(Class)的数据结构中,使用这个类时,只需要定义一个类的变量即可,这个变量叫做对象(Object)。面向对象的特点n封装性Encapsulation n继承性Inheritancen多态性Polymorphism面向对象设计o在C#中,类是一种功能强大的数据类型,而且是面向对象的基础。类定义属性和行为,程序员可以声明类的实例,从而可以利用这些属性和行为。o类具有如下特点:1.C#类只支持单继承,也就是类只能从一个基类继承实现。2.一个类可以实现多个接口。3.类定义可以在不同的源文

20、件之间进行拆分。4.静态类是仅包含静态方法的密封类。面向对象设计o类其实是创建对象的模板,类定义了每个对象可以包含的数据类型和方法,从而在对象中可以包含这些数据,并能够实现定义的功能。o类的声明的结构形式如下:class 类名 字段列表;方法列表;Member of ClassoData Members nfields域,即类中的变量。nconstants成员常量,代表与类相关的常量值。nevents 事件,用于说明可以被触发的事情。oFunction Members nmethods 成员方法,完成类中各种计算或功能的操作。nproperties属性,用于定义类中的值,并对它们提供读、写操作

21、。nconstructors构造方法,在类被实例化时首先执行的函数,主要是完成对象初始化操作。noperators操作符,定义类中特有的操作。nindexers索引指示器,允许编程人员在访问数组时,通过索引指示器访问类的多个实例。(1)公有成员 publicC#中的公有成员提供了类的外部界面,允许类的使用者从内部或外部直接进行访问。这是限制最少的一种访问方式。它的优先是使用灵活,缺点是外界可能会破坏对象成员值得合理性。(2)私有成员 privateC#中的私有成员仅限于类中的成员可以访问,从类的外部访问私有成员是不合法的。如果在声明中没有出现成员的访问修饰符,按照默认方式成员为私有的。(3)保

22、护成员 protected为了方便派生类的访问,又希望成员对于外界是隐藏的,这时可以声明成员为保护成员。(4)内部成员 internal一种特殊的成员。这种成员对于同一包中的应用程序或库是透明的,而在程序集或包之外是禁止访问的。Modifier for Member A Example of Data Member class PhoneCustomerpublic const string DayOfSendingBill=Monday;public int CustomerID;public string FirstName;public string LastName;PhoneCust

23、omer Customer1=new PhoneCustomer();Customer1.FirstName=Simon;class ClassA public int a;private int b;protected int c;public void SetA()a=1;/正确,允许访问类自身公有成员 b=2;/正确,允许访问类自身私有成员 c=3;/正确,允许访问类自身保护成员 class ClassB:A public void SetB()成员的访问修饰符的用法。ClassA BaseA=new ClassA();BaseA.a=11;/正确,允许访问基类公有成员 BaseA.b=

24、22;/错误,不允许访问基类私有成员 BaseA.c=33;/正确,允许访问基类保护成员 class ClassC public void AetB()ClassA BaseA=new ClassA();BaseA.a=111;/正确,允许访问类的其他公有成员 BaseA.b=222;/错误,不允许访问类的其他私有成员 BaseA.c=333;/错误,不允许访问类的其他保护成员 面向对象设计o对象是类的实例化,只有对象才能包含数据,执行行为,触发事件,而类只不过就像int一样是数据类型,只有实例化才能真正发挥作用。o对象具有以下特点:1.C#中使用的全都是对象。2.对象是实例化的,对象是从类和

25、结构所定义的模板中创建的。3.对象使用属性获取和更改它们所包含的信息。4.对象通常具有允许它们执行操作的方法和事件。5.所有C#对象都继承自Object。6.对象的具有多态性,对象可以实现派生类和基类的数据和行为。使用下面的例子说明一下类的成员的访问修饰符的用法。程序清单:class ClassA public int a;private int b;protected int c;public void SetA()a=1;/正确,允许访问类自身公有成员 b=2;/正确,允许访问类自身私有成员 c=3;/正确,允许访问类自身保护成员 class ClassB:A public void Se

26、tB()ClassA BaseA=new ClassA();BaseA.a=11;/正确,允许访问基类公有成员 BaseA.b=22;/错误,不允许访问基类私有成员 BaseA.c=33;/正确,允许访问基类保护成员 class ClassC public void AetB()ClassA BaseA=new ClassA();BaseA.a=111;/正确,允许访问类的其他公有成员 BaseA.b=222;/错误,不允许访问类的其他私有成员 BaseA.c=333;/错误,不允许访问类的其他保护成员 method方法三种参数传递方法oref 关键字使参数按引用传递。其效果是,当控制权传递回

27、调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。oout 方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。当希望方法返回多个值时,声明 out 方法非常有用。oparams 关键字可以指定在参数数目可变处采用参数的方法参数 面向对象设计o对象的声明就是类的实例化,传递回该对象的引用。此引用引用了新对象,但不包含对象数据本身。o类实例化的方式很简单,通过使用new来实现。例如:1.Point p1=new Point();/使用默认构造函数声明类的对象 2.Point p2=new Poin

28、t(1,1);/使用指定的构造函数声明类的对象 Properties属性属性owhy?oaccessor 存取标记nset (value)ngetoread-only property,write-only propertyo良好的风格:尽量不用public 类成员变量,而是采用属性sampleclass A private string foreName;public string ForeNameget return foreName;setif(value.Length 20)/code here to take error recovery action/(eg.throw an ex

29、ception)elseforeName=value;o在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。o实际上,在C#内部,this被定义为一个常量。因此,使用this+,this-这样的语句都是不合法的。但是,this可以作为返回值来使用。this 保留字class Class1 public int x;public void aaa()x=5;Console.WriteLine(The value of x is:0,x);Console.WriteLine(The value of this.is:0,this.x);static void Main(str

30、ing args)Class1 bb=new Class1();bb.aaa();static 静态成员静态成员o若将类中的某个成员声明为static该成员称为静态成员(包括fields、properties、methods等)。o类中的成员要么是静态static,要么是非静态instance的。o静态成员是属于类所有的,非静态成员则属于类的实例化的对象所有。o对于类的静态成员(无论是成员字段fields还是方法methods),在调用前可以不实例化该类。o无论这个类创建了多少个副本,一个静态成员在内存中只占有一块区域class Testint x;static int y;void F()x

31、=1;/正确,等价于this.x=1 y=1;/正确,等价于Test.y=1 static void G()x=1;/错误,不能访问this.xy=1;/正确,等价于Test.y=1如何声明静态和非静态成员 static void Main(string args)Test.t=new Test();t.x=1;/正确t.y=1;/错误,不能在类的实例中访问静态成员Test.x=1;/错误,不能按类访问非静态成员Test.y=1;/正确Constructors构造函数构造函数osame as in C+.o每个类都有构造函数,即使我们没有声明它,编译器也会自动地为我们提供一个默认的构造函数。o

32、使用构造函数请注意以下几个问题:n一个类的构造函数通常与类名相同。n构造函数不声明返回类型。n构造函数总是public类型的。如果是private类型的,表明类不能被实例化,这通常用于只含有静态成员的类。构造函数的使用:oclass A int x=0,y=0,count;public A()count=0;public A(int vx,int vy)x=vx;y=vy;析构函数析构函数 Finalizerso析构函数的名字与类名相同,只是在前面加了一个符号“”。析构函数不接受任何参数,也不返回任何值。o析构函数不能是继承而来的,也不能显式地调用。C+的程序员常常需要在析构函数中写上一系列d

33、elete语句来释放存储,而在C#中。资源的释放是可以通过“垃圾回收器”自动完成的,一般不需要用户干预,但在有些特殊情况下还是需要用到析构函数的,如在C#中非托管资源的释放。需要注意的是,如果一个类中没有使用到非托管资源,那么一定不要定义析构函数,这是因为对象执行了析构函数,那么“垃圾回收器”在释放托管资源之前要先调用析构函数,然后第二次才真正释放托管资源,这样一来,两次删除动作的花销比一次大多的。下面使用一段代码来示析构函数是如何使用的:public class ResourceHolder ResourceHolder()/这里是清理非托管资源的用户代码段 何时使用析构函数索引器索引器o索

34、引器可以像数组那样对对象进行索引访问。在C和C+中,没有索引器的概念,它是在C#首次提出的。o在许多情况下,某些数据信息应该是属于类或类的实例所私有的,需要限制对这些信息的访问。而我们有时又不希望这类数据对外界完全封闭。和属性一样,索引器为我们提供了控制访问权限的另一种办法。o 声明declare modifier 数据类型 this int index 访问函数体代码 索引器可以使用的修饰符有:new、public、protected、internal、private、virtual、sealed、override和abstract。案例案例:利用索引器访问一个给定的学生数组,输出学生姓名c

35、lass IndexStud private string sname;public IndexStud()/构造函数 sname=new stringSmith,Rose,Mary,Robot,Hamlat;/定义类IndexStud的索引器,用于访问存储在sname数组中学生信息 public string thisint index get returnsnameindex;set snameindex=value;examplepublic class App static void Main(string args)IndexStud stud=new IndexStud();for

36、(int x=0;x5;x+)/输出存储在数组中的对象的值Console.Write(0,10:s,studx);/调用索引器的get函数,将x值传送给indexConsole.WriteLine();类的继承 inheritanceo继承是面向对象编程的一大特性,通过继承,类可以从其它类继承相关特性。o派生类将获取基类的所有非私有数据和行为以及新类为自己定义的其他数据和行为。o继承实现方式是:在声明类时,在类名称后放置一个冒号,然后在冒号后指定要从中继承的类。例如:类B从类A中继承,类A被称着基类,类B被称着派生类:public class A /定义类A public A()public

37、class B:A /定义类B,继承自类A public B()方法的重载overloadingoC#支持方法重载,这可以让使用相同的名字来创建多个方法,而这些方法具有不同的参数。当调用这些方法时,CLR会根据参数的来选择相应的方法。o使用重载可以同时创建一个方法的不同版本。例如:int Add(int a,int b)/求两个整数的和 return a+b;float Add(float a,b)/求两个浮点数的和 return a+b;这样就可以调用方法Add()来求两个数的和,CLR会根据传进来的参数来调用不同的方法,代码如下:int sum=Add(1,2)/传入的参数是整型,float sumF=Add(1.000000,2.000000);/传入的参数是浮点数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁