欢迎来到天天文库
浏览记录
ID:34523285
大小:2.19 MB
页数:43页
时间:2019-03-07
《lesson03--值类型与引用类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章值类型和引用类型1本章目标理解值类型与引用类型的概念理解值类型与引用类型作为参数时的区别Ref和out类型的参数熟练掌握枚举、结构的使用2数据类型进阶数据类型基本的数据类型:Int,double,char,float,string……构造数据类型:类,接口,枚举,结构……数据类型的分类值类型引用类型3值类型和引用类型细分类别描述整型:int长整型:long基本数据类型浮点型:float值类型字符型:char布尔型:bool枚举类型枚举:enum结构类型结构:struct基类:Sys
2、tem.Object类字符串:string引用类型自定义类:class接口接口:interface数组数组:int[],string[]拆箱和装箱值类型和引用类型之间的转换装箱值类型引用类型拆箱staticvoidMain(string[]args)staticvoidMain(string[]args){{inti=123;inti=123;objecto=i;//objecto=i;//装箱装箱i=456;intj=(int)o;//拆箱}Console.WriteLine("值类型的值为{0
3、}",i);Console.WriteLine("引用类型的值为{0}",o);与值类型的变量}类型要一致演示示例4:拆箱装箱5值类型与引用类型值类型和引用类型的应用,跟踪数据的变化6值方式的参数的传递传递值类型参数:Int类型数据不会被修改,传递数据的副本//传递值类型参数StaticvoidMain(){inttest=10;studentstu=newstudent();stu.Vote(test);Console.WriteLine(test);}保持原来的10不变privatevoi
4、dVote(inti){i+=2;Console.WriteLine(i);}7值方式的参数的传递传递引用类型参数时:类:Student对象参数在程序中被修改,传递保存数据的地址变量//传递引用类型参数Studentscofield=引用类型:类newStudent("Scofield",Genders.Male,28,"越狱狱");scofield.SayHi();Vote(scofield);人气属性加1的方法scofield.SayHi();人气加18值类型值类型直接存储值student
5、1.AgeAge=18Age=18AgeAge=18Age=20student1student1studnet2student1studnet2student1.Age=18student2=student1student2.Age=209引用类型引用类型存储对值的引用两个变量都发生student1.Age变化Age=18Age=20student1student1studnet2student1studnet2student1.Age=18student2=student1student2.Ag
6、e=2010传递数组数组是值类型还是引用类型…arr[0]=1int[]odd={1,3,5};arr[1]=3PrintArray(odd);arr[2]=5ChangeToEven(odd);参数被修改PrintArray(odd);arr[0]=0…arr[1]=2arr[2]=4privatevoidChangeToEven(int[]arr){for(inti=0;i7、atevoidVote(refintnum){num++;}传递值类型ref方式传递完全修改传递引用类型12通过引用传递参数ref修饰参数:调用方法后,参数值的更改仍然保留定义和调用在参数前使用ref在调用方法前作为参数的变量声明并赋值何时使用希望保留参数的更改按值传递和按引用传递按值传递:传递的是对象在栈上的数据副本按引用传递:传递的是对象在栈上的数据空间对应的地址注意:按值(引用)传递和值类型参数和引用类型参数是两种概念按值传递会复制栈上的真实数据,无论数据是真实数据还是真实数据对8、应的堆的地址,副本数据的改变不会影响原数据20值类型和引用类型细分类别描述整型:int长整型:long基本数据类型浮点型:float值类型字符型:char布尔型:bool枚举类型枚举:enum结构类型结构:struct基类:System.Object类字符串:string引用类型自定义类:class接口接口:interface数组数组:int[],string[]程序中的数据程序中使用的数据:成员变量静态变量局部变量这样的数据是否就完全满足程序的需要呢?为什么
7、atevoidVote(refintnum){num++;}传递值类型ref方式传递完全修改传递引用类型12通过引用传递参数ref修饰参数:调用方法后,参数值的更改仍然保留定义和调用在参数前使用ref在调用方法前作为参数的变量声明并赋值何时使用希望保留参数的更改按值传递和按引用传递按值传递:传递的是对象在栈上的数据副本按引用传递:传递的是对象在栈上的数据空间对应的地址注意:按值(引用)传递和值类型参数和引用类型参数是两种概念按值传递会复制栈上的真实数据,无论数据是真实数据还是真实数据对
8、应的堆的地址,副本数据的改变不会影响原数据20值类型和引用类型细分类别描述整型:int长整型:long基本数据类型浮点型:float值类型字符型:char布尔型:bool枚举类型枚举:enum结构类型结构:struct基类:System.Object类字符串:string引用类型自定义类:class接口接口:interface数组数组:int[],string[]程序中的数据程序中使用的数据:成员变量静态变量局部变量这样的数据是否就完全满足程序的需要呢?为什么
此文档下载收益归作者所有