ImageVerifierCode 换一换
格式:PPT , 页数:35 ,大小:1.57MB ,
资源ID:5563700      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5563700.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(用对象思考:值类型和引用类型.ppt)为本站会员(buyk185)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

用对象思考:值类型和引用类型.ppt

1、第七章,用对象思考:值类型和引用类型,回顾,class Student private string Study(string name)/private int Study(string name)/ ,属性中get和set访问器可以单独存在么?,返回值不同的两个方法不能重载,预习检查,结构是值类型还是引用类型? 结构是否可以添加无参的构造函数?,本章任务,分别用结构和类实现Student对象 体会值类型与引用类型的区别,熟练掌握常量、枚举、结构的使用 理解值类型与引用类型的概念 理解值类型与引用类型作为参数时的区别,本章目标,数据类型回顾,常用的数据类型有哪些?,为什么使用常量,publi

2、c class Compute double pi = 3.14;/计算圆的周长public double Perimeter(double radius) return 2 * pi * radius; /计算圆的面积public double Area(double radius)return pi * radius * radius; ,这个类中,会反复使用pi,如果pi在类中被修改了,计算结果错误,如何避免pi在类中被修改?,常量,常量在使用过程中值不会发生变化 常量程序中反复使用,const 类型 常量名 = 常量值,程序中不会被改变,static void Main(string

3、args) const int PI = 3.14;PI = 3.20; ,强制赋值会发生错误,常量名通常使用大写,随意赋值的危险,const string GENDER_M = “男“; const string GENDER_F = “女“; / 性别 private string gender; public string Gender get return gender; set gender = value; ,用常量给属性赋值: student.Gender = GENDER_M;,也可以这样给属性赋值: student.Gender = “ACCP“;,为Student类添加性别

4、的属性,用常量赋值,有违常理,非法数据,演示示例1:MyEnum,什么是枚举,用一种新的类型定义enum,public enum Genders Male, Female / 性别 private Genders gender; public Genders Gender get return gender; set gender = value; ,这样给属性赋值: student.Gender = Genders.Male;,如果这样属性赋值: student.Gender = “ACCP“;,类型不同不能赋值,性别属性的类型,Genders是一个枚举类型,代码错误,枚举定义,枚举是一组描

5、述性的名称 枚举定义一组有限的值,不能包含方法 对可能的值进行约束 枚举允许描述性名称表示整数值,访问修饰符 enum 枚举名 值1,值2 ,public enum Accp S1,S2,Y2 ,我们不会输入S3,Y3,public enum WeekDays S1=1,S2=2,S3=3 / Console.WriteLine(“的整数值是0.“,(int)(Accp.S2);,取得枚举表示的整数值,枚举与其它类型的转换,枚举转换为字符串字符串转换为枚举,public enum Accp S1 ,S2,Y2 / Console.WriteLine(“S2的值是0.“,Accp.S2.ToSt

6、ring();,(Accp)(Enum.Parse(typeof(Accp),“S2“);,需要转换的字符串,枚举的特点,汽车类有一个成员是车身颜色,static void Main(string args)string color = new string “red“, “black“, “write“ ;Console.WriteLine(“我要选择的颜色是:0“,color0);,使用时,必须了解数组的构成,枚举可以用描述性的名称表示值,使用时无需了解它的构成,private enum color red,write,black static void Main(string args)

7、 Console.WriteLine(“我要选择的颜色是:0“, color.red); ,枚举,枚举的典型应用,DialogResult choice; choice = MessageBox.Show(“确定要退出吗?“, “退出系统“, MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if(choice = DialogResult.OK)Application.Exit();,DialogResult是个枚举,指示对话框的返回值,这样我们就不会判断一些非法的值,导致系统异常,为什么需要结构,有很多预定义颜色,正常人眼可分

8、辨的颜色种类可达几十万种以上 Color提供使用RGB值返回颜色的方法 FromArgb(),System.Drawing.Color有很多颜色值,它是一个枚举吗?,System.Drawing.Color是一个结构,结构定义,结构中有属性,也可以有方法,public struct StructStudent public string Name;public int Age;public string Hobby;public int Popularity;public void SayHi()/ . ,访问修饰符 struct 结构名 定义结构成员 ,构成和类相似,定义成员变量不能赋初值,

9、成员方法,/StructStudent myStu;myStu.Age = 20;myStu.Gender = Genders.Female;myStu.Hobby = “唱歌歌“;myStu.Name = “张靓靓“;myStu.Popularity = 100;myStu.SayHi();/,结构的使用2-1,定义结构可以不用new,为结构成员赋值,调用结构的方法,演示示例2:MyStruct,运行结果和第二章的SayHi相同,/ StructStudent myStu = new StructStudent(“张靓靓“, Genders.Female, 20, “唱歌歌“, 100);m

10、yStu.SayHi(); /,结构的使用2-2,struct StructStudent /public StructStudent(string name, Genders gender, int age,string hobby, int popularity)this.Name = name;this.Gender = gender;/ ,可以有构造函数,只能声明有参数的构造函数,构造函数传参,理解结构与类的区别,小结,编写一个存储老师属性的结构 结构名称TeacherStruct 姓名(teacherName) 年龄(teacherAge) 参加工作的年限(yearsOfServic

11、e) SayHi方法(大家好,我是某某老师。我已经在教育战线奋斗了 几年了) 调用这个结构显示它的数据,参考答案,值类型与引用类型,演示示例3:MySchool,使用类版Student和结构版Student实现下面操作,static void Main(string args) /使用值类型StructStudent student1 = new StructStudent();StructStudent student2 = new StructStudent();student1.Age = 18;student2 = student1;student2.Age = 20;Console.

12、WriteLine(“student1 = 0,student2 = 1“, student1.Age,student2.Age); ,static void Main(string args) /使用引用类型Student student1 = new Student();Student student2 = new Student();student1.Age = 18;student2 = student1;student2.Age = 20;Console.WriteLine(“student1 = 0,student2 = 1“, student1.Age,student2.Age)

13、; ,值类型,值类型直接存储值,Age=18,student1,student1,studnet2,student1.Age = 18,Age=18,Age=18,student2 = student1,student1.Age,student1,studnet2,Age=18,Age=20,student2.Age = 20,引用类型,student1,student1.Age = 18,Age=18,引用类型存储对值的引用,student1,studnet2,student2 = student1,student1.Age,两个变量都发生变化,Age=20,student1,studnet

14、2,student2.Age = 20,拆箱和装箱,值类型和引用类型之间的转换,值类型,引用类型,装箱,拆箱,static void Main(string args) int i = 123;object o = i; / 装箱i = 456; /改变i的内容Console.WriteLine(“值类型的值为 0“, i);Console.WriteLine(“引用类型的值为 0“, o); ,static void Main(string args) int i = 123;object o = i; / 装箱int j = (int)o; ,/ 拆箱,与值类型的变量类型要一致,演示示例4

15、:拆箱装箱,值方式的参数的传递,值传递方式传递值类型: 结构:StructStudent 不会被修改,/传递值类型参数 StructStudent scofield = new StructStudent(“Scofield“, Genders.Male, 28, “越狱狱“); scofield.SayHi(); Vote(scofield); scofield.SayHi();,private void Vote(StructStudent stu) stu.Popularity+; ,人气属性加1的方法,人气加1,两次的人气值相同,参数未发生变化,值传递,演示示例5:MySchool,值

16、方式的参数的传递,值传递引用类型时: 类:Student 参数在程序中被修改,/传递引用类型参数 Student scofield = new Student(“Scofield“, Genders.Male, 28, “越狱狱“); scofield.SayHi(); Vote(scofield); scofield.SayHi();,引用类型:类,人气属性加1的方法,人气加1,引用方式传递,传递值类型,传递引用类型,ref方式传递完全修改,private void Vote(ref StructStudent stu) stu.Popularity+; ,ref引用方式传递参数,演示示例6

17、:MySchool,值类型和引用类型细分,传递数组,数组是值类型还是引用类型,/ int odd = 1, 3, 5 ; PrintArray(odd); ChangeToEven(odd); PrintArray(odd); /,private void ChangeToEven(int arr) for (int i = 0; i arr.Length; i+)arri = i * 2; ,值方式传递,arr0=1 arr1=3 arr2=5arr0=0 arr1=2 arr2=4,参数被修改,数组是引用类型,演示示例7:MyArray,数组属性,建立班级类包含多个学员,访问学员对象,My

18、Class1 myClass1 = new MyClass1(“T01“); myClass1.Students2.SayHi();,通过索引访问,数组属性,什么是索引器,能否通过姓名访问学员?,public Student thisint indexget return studentsindex; ,Students类中添加,/采用索引器的方式 MyClass myClass = new MyClass(“T01“); myClass.Students2.SayHi(); myClass.Students“周杰杰“.SayHi(); ,可以按照索引访问,重载的索引器根据姓名查找学员,演示示例8:MySchool,索引器的特点,DataRow“列名“,DataReader“列名“,数组属性只能根据下标(索引)来访问 索引器可以被重载 可以使用更灵活的方式访问,定义访问方式 我们以前用过的索引器,类图,VS2005的类图,类图描述类的结构,查看一个类的类图,“锁”表示私有,不同字段有不同的图标,通用的类图,“-”表示私有 “+”表示公有,“:”后是变量类型,“:”后是返回类型,读懂类图是OOP的基本要求,总结,常量在程序中可以被修改吗? 枚举中可以有方法吗? 简述类和结构的区别? 值类型和引用类型间的转换称为什么? 通用的类图中私有成员用什么表示?,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报