C#面向对象语法.ppt
《C#面向对象语法.ppt》由会员分享,可在线阅读,更多相关《C#面向对象语法.ppt(109页珍藏版)》请在三一办公上搜索。
1、C#面向对象语法,第一章 数据类型 变量和表达式第二章 分支和循环第三章 面向对象基础与语法第四章 面向对象高级应用第五章 事件与委托第六章 字符串 数组与集合第七章 IO流与序列化第八章 异步通信和线程,第一章 数据类型 变量和表达式,一、数据类型1)值类型 引用类型2)类型转换3)拆箱与装箱二、变量1)变量和常量命名规则三、表达式1)常用的表达式及优先级2)条件与(&),或(|),非(!)逻辑与(&),或(|),异或(),第一章 数据类型 变量和表达式,一、数据类型:值类型和引用类型(1)值类型主要由简单类型、枚举类型和结构类型这三类组成:(i)值类型:简单类型有符号整数:sbyte 1字
2、节,8位(-128127)short 2字节,16位(-3276832767)int 4字节,32位(-2147483648 2147483647)long 8字节,64位(-9223372036854775808 9223372036854775807)无符号整数:byte 1字节,8位(0255)ushort 2字节,16位(065536)uint 4字节,32位(0 4294967295)单精度浮点型:float 4字节,32位(1.51045 到3.41038,7位精度)双精度浮点型:Double 8字节,64位(5.010324 1.710308,15位精度)十进制类型:decima
3、l 16字节,128位(1.0 10287.9 1028,29位精度)布尔类型:bool 1字节,8位(true或false)字符类型:char 2字节(中文)或1字节(字母),16位(在065 535范围内以双字节编码的任意符号),第一章 数据类型 变量和表达式,(ii)值类型:枚举类型 枚举类型为一组在逻辑上密不可分的整数提供便于记忆的符号 比如,声明一个代表季节的枚举类型的变量:enum Season Spring,Summer,Autumn,Winter;Season currentSeason;枚举类型一般写在类外,隶属于某个程序集 enum Season Spring,Summe,
4、Autumn,Winter;public virtual void say()Console.WriteLine(Season.Spring);Console.WriteLine(Season)2);输出:Spring,Autumn,第一章 数据类型 变量和表达式,(iii)值类型:结构类型 把一系列相关的变量组织成单一实体的过程,在C#中称为生成结构的过程。这个单一实体的类型就叫做结构类型,每一个变量称为结构的成员。结构类型的变量采用struct来声明。枚举类型一般写在类外,隶属于某个程序集struct PhoneBook public string name;public int phon
5、eNumber;public string address;public PhoneBook(string name,int Num,string address)this.name=name;this.phoneNumber=Num;this.address=address;限制:不能显式定义无参构造函数如果有”有参构造函数”,则在构造函数内,必须对每个变量有显式的赋值过程两种调用方法 调用(1):PhoneBook phonebook;phonebook.name=周硕;phonebook.phoneNumber=16134;phonebook.address=湖北随州;调用(2):Pho
6、neBook phonebook=new PhoneBook(周硕,123,湖北随州);,第一章 数据类型 变量和表达式,(2)引用类型 在内存中不直接存储引用类型的数据,而是存储该数据的地址。引用类型包括:类(class)接口(interface)数组(array)字符串(string)委托,第一章 数据类型 变量和表达式,二、类型转换i)字符串与其它数据类型转换 字符串数据类型Convert.ToXXX();XXX:目标类型 eg:int i=Convert.ToInt32(“1234”);数据类型.Parse()方法 eg:int.Parse(“1234”);其它数据类型字符串.ToSt
7、ring()方法ii)显示和隐示类型转化显示:从大范围到小范围,有符号的范围更广 int i=(int)3.14;(强制将double类型转换为int类型)隐示:小范围到大范围 double i=3;(自动将int类型转为double类型),第一章 数据类型 变量和表达式,二、类型转换iii)父类与子类之间的转换Public class AnimalPublic class Dog:Animal父类的范围更广,子类自动转换为父类:Animal animal=new Dog();父类到子类则不能进行强制转换 Animal animal=new Animal();Dog dog=(Dog)anim
8、al;报错As把一种类型转换为指定的引用类型classA objA=new classA();classD objD=(classD)objA;相当于classA objA=new classA();classD objD=objA as classD;以上两种区别在于:第一种转换失败出现异常,而第二种则返回null.,第一章 数据类型 变量和表达式,二、类型转换iiii)枚举转换 enum Season Spring,Summer,Autumn,Winter;枚举类型一般写在类外,隶属于某个程序集 enum Season Spring,Summe,Autumn,Winter;public v
9、irtual void say()Console.WriteLine(int)Season.Spring);Console.WriteLine(Season)2);输出:0,Autumn(int)Season.Spring将枚举类型转换int类型(Season)2将int整型转换为枚举类型隐式枚举转换:允许把十进制整数0转换成任何枚举类型,而其他的整数则不存在这种隐式转换。显式枚举转换包括以下内容:从sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double或decimal转换为任何枚举类型从任何枚举类型转换为sbyte、byte
10、、short、ushort、int、uint、long、ulong、char、float、double或decimal 从任何枚举类型转换为任何其他枚举类型,第一章 数据类型 变量和表达式,三、拆箱与装箱装箱就是将值类型转换为引用类型Eg:int i=2011;Object obj=i;拆箱就是将引用类型转换为值类型int j=(int)obj;,第一章 数据类型 变量和表达式,四、(1)变量命名规则:1)由字母、数字、下划线组成2)不允许以数字开头3)不能使用C#中的关键字eg:private string userName;关于变量命名的一般建议:变量名应具有描述性质变量名最好以小写字母开
11、头 在包含多个单词的变量名中,从第二个单词开始,每个单词都采取首字母大写的形式,第一章 数据类型 变量和表达式,四、(2)常量1)使用关键字:const(静态常量)声明方法:const 数据类型 常量表达式;eg:private const string userName=“zhoushuo”;常量具有如下特征:1.常量必须在声明时初始化。指定了其值后,就不能再修改了。2.常量的值必须能在编译时用于计算。因此,不能用从一个变量中提取的值来初始化常量。如果需要这么做,应使用只读字段。3.常量总是静态的。但注意,不必(实际上,是不允许)在常量声明中包含修饰符static。所以访问常量时用:类名.常
12、量名 在程序中使用常量至少有3个好处:A.常量用易于理解的清楚的名称替代了含义不明确的数字或字符串,使程序更易于阅读。B.常量使程序更易于修改。例如,在C#程序中有一个SalesTax常量,该常量的值为6%。如果以后销售税率发生变化,把新值赋给这个常量,就可以修改所有的税款计算结果,而不必查找整个程序,修改税率为0.06的每个项。C.常量更容易避免程序出现错误。如果要把另一个值赋给程序中的一个常量,而该常量已经有了一个值,编译器就会报告错误。,第一章 数据类型 变量和表达式,四、(2)常量2)使用关键字:readonly(动态常量)声明方法:readonly 数据类型 常量表达式;在用cons
13、t来定义常量的时候,在类型上有很多限制。首先,此类型必须属于值类型,同时此类型的初始化不能通过new来完成,因此一些用struct定义的值类型常量也不能用const来定义。readonly所定义的常量除了在定义的时候可以设定常量值外,还可以在类的构造函数中进行设定。由于readonly所定义的常量相当于类的成员,因此使用const来定义常量所受到的类型限制,在使用readonly去定义的时候全部消失,即可以用readonly去定义任何类型的常量 class Program private const string userName=abc;private readonly string pas
14、sWord;public Program()passWord=1234;Const声明变量时必须初始化Readonly则可以在构造函数中初始化,第一章 数据类型 变量和表达式,变量的作用域变量的作用域是指变量在程序中能够被识别的范围。局部变量 在C#中,在方法内部创建的变量只能在方法内部使用,所以这种变量对于方法而言是局部的,被称为“局部变量”(Local Variable)。,第一章 数据类型 变量和表达式,(8)变量的作用域变量的作用域是指变量在程序中能够被识别的范围全局变量 与局部变量相对的,还有一个概念全局变量(Global Variable),由任何位于方法外的语句来声明和初始化(分
15、配内存等资源)。所有在物理上位于全局变量声明之后的程序代码都可以调用并使用它,第一章 数据类型 变量和表达式,五、表达式运算符分为三类:一元运算符:只使用一个操作数 二元运算符:使用两个操作数 三元运算符:使用三个操作数运算符从高到低的优先级顺序:,第一章 数据类型 变量和表达式,五、表达式条件运算符对条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。逻辑运算符和布尔型操作数一起组成了逻辑表达式。扩充:,第二章 分支和循环,分支结构:C#中控制分支结构的语句包括:ifelse语句和switch语句。swit
16、ch 语句的格式:switch(控制表达式)case 常量表达式1:语句组1;break;case 常量表达式2:语句组2;break;.case 常量表达式:语句组n;break;default:语句组 n+1;break;switch()中的输入参数只能是(有或无符号)整型(sbyte,short,int,long)或字符型(包括字符串),不能用实型(浮点型)数,第二章 分支和循环,分支结构:public string DefaultValue(ColumnSchema col)string result=0;switch(col.DataType)case System.Data.DbT
17、ype.Boolean:result=false;break;case System.Data.DbType.Byte:case System.Data.DbType.Decimal:case System.Data.DbType.Double:case System.Data.DbType.Int16:case System.Data.DbType.Int32:case System.Data.DbType.Int64:case System.Data.DbType.Single:case System.Data.DbType.UInt16:case System.Data.DbType.U
18、Int32:case System.Data.DbType.UInt64:case System.Data.DbType.Currency:result=0;break;case System.Data.DbType.Date:case System.Data.DbType.DateTime:result=DateTime.Now;break;case System.Data.DbType.Guid:result=Guid.Empty;break;case System.Data.DbType.String:case System.Data.DbType.StringFixedLength:r
19、esult=String.Empty;break;return result;,第二章 分支和循环,循环语句while循环 dowhile循环 for循环 foreach循环 continue 和 break在循环中的应用,第二章 分支和循环,循环语句dowhile循环的语法结构:do 需要循环执行的语句;while(条件);continue:继续,结束当前这次循环,进入下次循环break;煞车,中断.结束整个循环,第二章 分支和循环,foreach循环:只关心集合中的个体,不关心数量foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。演示如何使用 foreach 语句输出数组
20、的内容:static void Main()string arr=new string Jan,Feb,Mar;foreach(string s in arr)System.Console.WriteLine(s);,第二章 分支和循环,冒泡排序:/冒泡排序,相邻的两个数比较,找出最大的值/public int BubleSort(int arr)for(int i=0;i arrj)int temp=arrj;arrj=arrj-1;arrj-1=temp;return arr;,第二章 分支和循环,选择排序:/选择排序,用一个数分别与所有的数比较,找出最小的值/public int Sel
21、ectSort(int arr)for(int i=0;i arrj)int temp=arri;arri=arrj;arrj=temp;return arr;,第三章 面向对象基础与语法,(一)类 class成员包含:字段 Filed属性Property索引器 Indexer方法 Function事件Event(二)抽象类 abstract 创建抽象方法的语法是以访问修饰符开始,后面跟着 abstract 修饰符方法类型、方法名以及方法参数(三)接口 Interface 接口中方法无方法体接口是引用类型,是一系列需要实现的功能的定义.接口成员包括:方法属性 索引器 事件,第三章 面向对象基础
22、与语法,面向对象程序设计中的关键字:可访问性修饰符staticconstreadonlythis,第三章 面向对象基础与语法,可访问性修饰符:public:对任何类和成员都公开,无限制访问;protected:仅仅对该类以及该类的派生类公开;private:仅仅对该类公开;internal:只能值包含该类的程序集中访问该类;protected internal:只能在本类,派生类或者包含该类的程序集中访问.namespace 默认是public,不允许定义public类 默认是internal类成员 默认是privatestruct 值类型与继承无关protected有关的 对 struct
23、不适用Interface,enum 默认是public对interface中的成员,可访问性无效(不需要定义),第三章 面向对象基础与语法,static关键字静态的,不需要创建类的实例,就可以直接通过类名来访问static成员static 方法static 构造函数 1.代码的执行顺序,代码在前的先执行;2.静态成员初始化语句要先于静态构造函数执行;3.静态成员初始化语句与静态构造函数只执行一次。,第三章 面向对象基础与语法,增加对Static构造函数的认识static void Main(string args)Console.WriteLine(A.X.ToString();/Return
24、:2 Console.WriteLine(B.Y.ToString();/Return:1输出:x为2,y为1 class A public static int X=B.Y;static A()+X;class B public static int Y=A.X;static B()+Y;分析此类问题,只要记住三点就行了:1.代码的执行顺序,代码在前的先执行;2.静态成员初始化语句要先于静态构造函数执行;3.静态成员初始化语句与静态构造函数只执行一次。,第三章 面向对象基础与语法,const关键字:常量特点必须在定义的时候赋值一旦在写代码时赋过值,以后在运行时,不允许再修改隐含着是一个sta
25、ticconst修饰值类型(OK)定义一个引用类型string 引用类型 OK=”abc”其他引用类型必须使用null赋初值可以修饰局部变量:局部变量,不能再修改值 稀有总结:在写代码时,就定义好的一个常量(值类型)(编译的时候固定),第三章 面向对象基础与语法,readonly关键字:运行时动态赋值,只读的一个常量特点可以是任何类型赋值在定义时就先赋值只能在构造函数中赋值不能修饰局部变量不带隐含的static不强制要求必须初始化总结:运行时只读,第三章 面向对象基础与语法,this关键字代表当前这个实例使用只有2个领域在类内部访问自己类的成员,此时代表当前类的实例eg:在 Car类中publ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 面向 对象 语法
链接地址:https://www.31ppt.com/p-6502428.html