欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

    C#程序设计.ppt

    • 资源ID:236174       资源大小:159KB        全文页数:59页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C#程序设计.ppt

    C#程序设计语言,学习内容,C#语言概述基本语法 数组 控制语句 面向对象设计 encapsulationinheritancepolymorphism,C#语言概述,C#语言是微软公司设计的一种编程语言,是从C和C+派生来的一种简单、现代、面向对象和类型安全的编程语言。作为一种完全面向对象的语言,要牢记在C#里,任何事物都是类和对象,甚至可以把一些简单类型如整型当作某个对象。C#是一种对大小写敏感的语言对于私有变量的定义一般都以小写字母开头、而公共变量的定义则以大写字母开头,C#语言概述,在一个开发语言中,注释也是非常重要。C#提供了两种注释的类型:1.第一种是:单行注释,注释符号是“/”,例如:int a;/一个整型变量,存储整数 2.第二种是:多行注释,注释符号是“/*”和“*/”,任何在符号“/*”和“*/”之间的内容都会被编译器忽略,例如:/*一个整型变量,存储整数*/int a;3.XML注释符号“/”也可以用来对C#程序进行注释,例如:/一个整型变量/存储整数 int a;,C#语言概述,每一句C#程序都要以语句终止符来终结,C#的语句终止符是“;”。例如:int a;在C#程序中,可以在一行中写多个语句,但每个语句都要以“;”结束,也可以在多行中写一个语句,但要在最后一行中以“;”结束。例如:int a;string s;float f;/一行中多个语句语句块 在C#程序中,把用符号“”和“”包含起来的程序称为语句块。语句块在条件和循环语句中经常会用到,主要是把重复使用的程序语句放在一起以方便使用,这样有助于程序的结构化。,基本语法,语法是一种程序语言最基本的定义规范,只要按照语法给出的规则才能编写出正确的程序。C#程序基本语法包括:数据类型的种类,变量和常量的声明和使用以及语句的基本组成表达式和运算符。C#的数据类型包括值类型、引用类型和指针类型。指针类型是不安全类型,一般不推荐使用。,数据类型汇总,Floatdoubledecimalz,基本语法,值类型包括简单类型(如字符型、浮点型和整数类等)、枚举类型和结构类型。所有的值类型都隐含地声明了一个公共的无参数的构造函数,这个构造函数返回一个初始为零的值类型的实例。例如,对于字符型,默认值是“x0000”;对于float,默认值是0.0F。(1)简单类型:它是C#预先定义的结构类型,简单类型用关键字定义,这些关键字仅仅是在System命名空间里预定义的结构类型的化名,比如关键字int对应System.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)结构类型:它是用来封装小型的相关变量组,把它们封装成一个实体来同一使用,以struct关键字进行声明。,基本语法,引用类型包括类类型、对象类型、字符串类型、接口类型、委托类型和数组类型等。引用类型与值类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量把它们的引用存储在对象中。引用类型:(1)字符串类型:直接从object中继承而来的密封类。String类型的值可以写成字符串文字的形式。例如:”123”、”hello world”是字符串类型。,基本语法,(2)接口类型:一个接口声明一个只有抽象成员的引用类型,接口仅仅存在方法标志,但没有执行代码,以关键字interface进行声明。(3)委托类型:委托引用一种静态的方法或对象实例,引用该对象的实例方法,与c/c+中的指针类似,以关键字delegate进行声明。,基本语法,变量,就是在程序的运行过程中其值可以被改变的量,变量的类型可以是任何一种C#的数据类型。所有值类型的变量具有实际存在于内存中的值,也就是说当将一个值赋给变量是执行的是值拷贝操作。变量的定义格式为:1.变量数据类型 变量名(标识符);含义是声明了一个变量,并没有对变量进行赋值,此时变量使用默认值。2.变量数据类型 变量名(标识符)变量值;含义是声明定义变量的同时对变量进行了初始化,变量值应该和变量数据类型一致,基本语法,常量,就是在程序的运行过程中其值不能被改变的量。常量的类型也可以是任何一种C#的数据类型。常量的定义格式为:const 常量数据类型 常量名(标识符)常量值;“常量值”的类型要和常量数据类型一致,如果定义的是字符串型,“常量值”就应该是字符串类型,否则会发生错误。例如:1.const double PI=3.1415926;/定义了一个double类型的常量 2.const string VERSION=Visual Studio 2008;/定义了一个字符串型的常量,基本语法,表达式是可以运算的代码片段,表达式可以包括运算符、方法调用等,表达式是程序语句的基本组成部分,例如:1.int num=5;/定义一个整型变量num,并对其赋值 2.string str=“你好,世界!”;/定义一个字符串变量,并对其赋值运算符是数据运算的术语和符号,它接受一个或多哥称为操作数的表达式作为输入并返回值。C#中的运算符非常的多,从操作数上划分运算符大致分为3类:一元运算符:处理一个操作数,只有几个一元运算符。二元运算符:处理两个操作数,大多数运算符都是二元运算符。三元运算符:处理三个操作数,只有一个三元运算符。,基本语法,从功能上划分,运算符主要分为:算术运算符,赋值运算符,关系运算符,条件运算符,位运算符和逻辑运算符。例如:1.i+;/一元运算,变量i自动加1 2.num=2+3;/二元运算,变量num等于2加3的和 3.result=a b?100:-10/三元运算,条件运算符,根据条件的真假来决定运算的正确性 表达式中的运算符按照运算符优先级的特定顺序计算,基本语法,数组是包含若干个相同类型数据的集合,数组的数据类型可以是任何类型。数组可以是一维的,也可以是多维的。数组的维数决定了相关数组元素的下标数,一维数组只有一个下标。一维数组通过声明方式如下:数组类型 数组名;声明方式说明:数组类型”是数组的基本类型,一个数组只能有一个数据类型。数组的数据类型可以是任何类型,包括前面介绍的枚举和结构类型。,基本语法,数组声明以后,就可以对数组进行初始化了,数组必须在访问之前初始化。数组的初始化有两种方式:第一种是在声明数组的时候进行初始化;第二种是使用new关键字进行初始化。数组中的所有元素值都可以通过数组名和下标来访问,数组名后面的方括号中指定下标。数组的第一个元素的下标是0,第二个元素的下标是1,依此类推。例如:1.int vector=80,90,100,66;/定义并初始化了一个有四个元素的数组vector 2.vector2=99;/使用vector 2访问该数组的第3个元素,基本语法,多维数组有多个下标,例如二维数组和三维数组声明的语法分别为:1.数组类型,数组名;2.数组类型,数组名;多维数组可以在声明的时候初始化,也可以使用new关键字进行初始化。初始化时数组的每一行值都使用括号包括起来,行与行间用逗号分隔。要访问多维数组中的每个元素,只需指定它们的下标,并用逗号分隔开.。例如;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类中封装的各种内部操作,可以很容易完成对字符串处理。比如: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类 特殊引用类型,控制语句,语句是程序的基本组成部分,正是一句句语句组成了程序。在C#中,除了单行语句外,还有一些复杂的语句,用来帮助完成比较复杂逻辑程序。条件语句 条件语句通过判断条件是否为真来执行相应的语句块。在C#中,有两种形式的的条件语句结构:if语句和switch语句。1if语句 if语句的语法如下:if(条件)执行的语句;else 执行的语句;,控制语句,if语句根据条件的真假来执行相应的语句块,如果条件为真,则执行if语句块,若为假,则执行else语句块。if语句还有几个变化的结果形式,可以单独使用if语句,而不加else语句,如果有多个条件需要判断,也可以通过添加else if语句。,控制语句,2.switch语句根据对应的条件来执行相应的语句块,主要用于需要判断的条件情况比较多情况。switch语句结构形式如下:switch case 条件1:执行的语句;break;case 条件n:执行的语句;break;default:执行的语句;break;,控制语句,C中的循环语句有四种:do-while循环,while循环,for循环和foreach循环。1.do-while循环 do-while语句根据其布尔表达式的值有条件的执行它的嵌套语句一次或者多次,程序从会首先执行一次循环代码,然后判断布尔表达式的值,如果值为true就从do语句位置开始重新执行循环代码,一直到布尔表达式的值为false。其语法定义如下:do 循环代码 while(布尔表达式);,控制语句,2.while循环 while循环非常类似于do-while循环,二者有一个重要的区别:while循环中的布尔测试是在循环开始时进行,而do-while循环是在最后检测。其语法定义如下:while(布尔表达式)循环代码,控制语句,3.for循环 for循环是最常用的一种循环语句,这类循环可以执行指定的次数.首先计算列初始表达式的值,接下来当条件成立时,执行其嵌套语句,之后计算重复表达式的值并根据其值决定下一步的操作。for循环的语法定义如下:for(循环变量初始化;循环条件;循环操作)循环代码,控制语句,4.foreach循环 foreach语句列举出一个集合(collection)中的所有元素,使用括号中的类型和标识符用来声明该语句的循环变量,并执行关于集合中每个元素的嵌套语句。foreach语句的语法定义如下:foreach(类型 标识符 in 表达式)循环代码,控制语句,跳转语句:进行无条件跳转,C#为此提供了如下五个语句:break语句:终止并跳出循环,用于跳出包含它的switch,while,do,for或者foreach语句。continue语句:终止当前的循环,重新开始一个新的循环。goto语句:跳转到指定的位置,建议不要使用goto语句,因为该语句可能会破坏程序的结构性。return语句:跳出循环及其包含的函数throw语句:抛出一个异常,异常是程序执行过程中出现的正常事件,是程序所遇到的轻微错误,即各种意外情况,可以写代码来处理异常并继续程序执行,而不是让程序中断。常见的异常包括用户错误的输入、内存不足、磁盘读写错误、网络连接失败或资源不可用等等。,异常处理,方式一try语句块catch(数据类型 标识符)/可以有0个1个或多个catch语句语句块.finally语句块方式二try语句块catch(数据类型 标识符)/可以有多个catch语句语句块.,try catch finally语句语法格式,面向对象设计,面向对象的程序设计(OOP:Object-Oriented Programming)是一种基于结构分析的、以数据为中心的程序设计方法。其主要思想是将数据及处理这些数据的操作都封装(Encapsulation)到一个称为类(Class)的数据结构中,使用这个类时,只需要定义一个类的变量即可,这个变量叫做对象(Object)。,面向对象的特点,封装性Encapsulation 继承性Inheritance多态性Polymorphism,面向对象设计,在C#中,类是一种功能强大的数据类型,而且是面向对象的基础。类定义属性和行为,程序员可以声明类的实例,从而可以利用这些属性和行为。类具有如下特点:C#类只支持单继承,也就是类只能从一个基类继承实现。一个类可以实现多个接口。类定义可以在不同的源文件之间进行拆分。静态类是仅包含静态方法的密封类。,面向对象设计,类其实是创建对象的模板,类定义了每个对象可以包含的数据类型和方法,从而在对象中可以包含这些数据,并能够实现定义的功能。类的声明的结构形式如下:class 类名 字段列表;方法列表;,Member of Class,Data Members fields域,即类中的变量。constants成员常量,代表与类相关的常量值。events 事件,用于说明可以被触发的事情。Function Members methods 成员方法,完成类中各种计算或功能的操作。properties属性,用于定义类中的值,并对它们提供读、写操作。constructors构造方法,在类被实例化时首先执行的函数,主要是完成对象初始化操作。operators操作符,定义类中特有的操作。indexers索引指示器,允许编程人员在访问数组时,通过索引指示器访问类的多个实例。,(1)公有成员 publicC#中的公有成员提供了类的外部界面,允许类的使用者从内部或外部直接进行访问。这是限制最少的一种访问方式。它的优先是使用灵活,缺点是外界可能会破坏对象成员值得合理性。(2)私有成员 privateC#中的私有成员仅限于类中的成员可以访问,从类的外部访问私有成员是不合法的。如果在声明中没有出现成员的访问修饰符,按照默认方式成员为私有的。(3)保护成员 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;PhoneCustomer 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=22;/错误,不允许访问基类私有成员 BaseA.c=33;/正确,允许访问基类保护成员 class ClassC public void AetB()ClassA BaseA=new ClassA();BaseA.a=111;/正确,允许访问类的其他公有成员 BaseA.b=222;/错误,不允许访问类的其他私有成员 BaseA.c=333;/错误,不允许访问类的其他保护成员,面向对象设计,对象是类的实例化,只有对象才能包含数据,执行行为,触发事件,而类只不过就像int一样是数据类型,只有实例化才能真正发挥作用。对象具有以下特点:C#中使用的全都是对象。对象是实例化的,对象是从类和结构所定义的模板中创建的。对象使用属性获取和更改它们所包含的信息。对象通常具有允许它们执行操作的方法和事件。所有C#对象都继承自Object。对象的具有多态性,对象可以实现派生类和基类的数据和行为。,使用下面的例子说明一下类的成员的访问修饰符的用法。程序清单: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=22;/错误,不允许访问基类私有成员 BaseA.c=33;/正确,允许访问基类保护成员 class ClassC public void AetB()ClassA BaseA=new ClassA();BaseA.a=111;/正确,允许访问类的其他公有成员 BaseA.b=222;/错误,不允许访问类的其他私有成员 BaseA.c=333;/错误,不允许访问类的其他保护成员,method方法三种参数传递方法,ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。out 方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。当希望方法返回多个值时,声明 out 方法非常有用。params 关键字可以指定在参数数目可变处采用参数的方法参数,面向对象设计,对象的声明就是类的实例化,传递回该对象的引用。此引用引用了新对象,但不包含对象数据本身。类实例化的方式很简单,通过使用new来实现。例如:1.Point p1=new Point();/使用默认构造函数声明类的对象 2.Point p2=new Point(1,1);/使用指定的构造函数声明类的对象,Properties属性,why?accessor 存取标记set(value)getread-only property,write-only property良好的风格:尽量不用public 类成员变量,而是采用属性,sample,class A private string foreName;public string ForeNameget return foreName;setif(value.Length 20)/code here to take error recovery action/(eg.throw an exception)elseforeName=value;,在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。实际上,在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(string args)Class1 bb=new Class1();bb.aaa();,static 静态成员,若将类中的某个成员声明为static该成员称为静态成员(包括fields、properties、methods等)。类中的成员要么是静态static,要么是非静态instance的。静态成员是属于类所有的,非静态成员则属于类的实例化的对象所有。对于类的静态成员(无论是成员字段fields还是方法methods),在调用前可以不实例化该类。无论这个类创建了多少个副本,一个静态成员在内存中只占有一块区域,class Testint x;static int y;void F()x=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构造函数,same as in C+.每个类都有构造函数,即使我们没有声明它,编译器也会自动地为我们提供一个默认的构造函数。使用构造函数请注意以下几个问题:一个类的构造函数通常与类名相同。构造函数不声明返回类型。构造函数总是public类型的。如果是private类型的,表明类不能被实例化,这通常用于只含有静态成员的类。,构造函数的使用:,class A int x=0,y=0,count;public A()count=0;public A(int vx,int vy)x=vx;y=vy;,析构函数 Finalizers,析构函数的名字与类名相同,只是在前面加了一个符号“”。析构函数不接受任何参数,也不返回任何值。析构函数不能是继承而来的,也不能显式地调用。C+的程序员常常需要在析构函数中写上一系列delete语句来释放存储,而在C#中。资源的释放是可以通过“垃圾回收器”自动完成的,一般不需要用户干预,但在有些特殊情况下还是需要用到析构函数的,如在C#中非托管资源的释放。,需要注意的是,如果一个类中没有使用到非托管资源,那么一定不要定义析构函数,这是因为对象执行了析构函数,那么“垃圾回收器”在释放托管资源之前要先调用析构函数,然后第二次才真正释放托管资源,这样一来,两次删除动作的花销比一次大多的。下面使用一段代码来示析构函数是如何使用的:public class ResourceHolder ResourceHolder()/这里是清理非托管资源的用户代码段,何时使用析构函数,索引器,索引器可以像数组那样对对象进行索引访问。在C和C+中,没有索引器的概念,它是在C#首次提出的。在许多情况下,某些数据信息应该是属于类或类的实例所私有的,需要限制对这些信息的访问。而我们有时又不希望这类数据对外界完全封闭。和属性一样,索引器为我们提供了控制访问权限的另一种办法。声明declare modifier 数据类型 this int index 访问函数体代码 索引器可以使用的修饰符有:new、public、protected、internal、private、virtual、sealed、override和abstract。,案例:利用索引器访问一个给定的学生数组,输出学生姓名class IndexStud private string sname;public IndexStud()/构造函数 sname=new stringSmith,Rose,Mary,Robot,Hamlat;/定义类IndexStud的索引器,用于访问存储在sname数组中学生信息 public string thisint index get returnsnameindex;set snameindex=value;,example,public class App static void Main(string args)IndexStud stud=new IndexStud();for(int x=0;x5;x+)/输出存储在数组中的对象的值Console.Write(0,10:s,studx);/调用索引器的get函数,将x值传送给indexConsole.WriteLine();,类的继承 inheritance,继承是面向对象编程的一大特性,通过继承,类可以从其它类继承相关特性。派生类将获取基类的所有非私有数据和行为以及新类为自己定义的其他数据和行为。继承实现方式是:在声明类时,在类名称后放置一个冒号,然后在冒号后指定要从中继承的类。例如:类B从类A中继承,类A被称着基类,类B被称着派生类:public class A/定义类A public A()public class B:A/定义类B,继承自类A public B(),方法的重载overloading,C#支持方法重载,这可以让使用相同的名字来创建多个方法,而这些方法具有不同的参数。当调用这些方法时,CLR会根据参数的来选择相应的方法。使用重载可以同时创建一个方法的不同版本。例如: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#程序设计.ppt)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开