C#学习笔记-07

41.常量:coust修饰符, 使用的时候,直接通过类引出。

        常量是表示常量值的类成员。

        常量隶属于类型而不是对象,所以没有“实例常量”。

42.各种“只读”的应用场景。

        为了提高成的可读性以及执行效率:常量

        为了防止对象的值被改变:只读字段

        向外部暴露不允许修改的数据:只读属性(静态或者非静态),功能以及常量有一些重叠

        当希望成为常量的值其类型不能被常量声明接受时(类,自定义的结构体):静态只读字段。

43.参数

(1)值参数(创建了一个副本):值类型

        因为值类型参数在栈存储,引用类型在堆上进行存储,所以改变堆上的数据,并不会影响栈数据的存储。

        C#学习笔记-07_第1张图片

(2)值参数(创建了一个副本):引用类型

        引用类型在堆上进行存储,分两种,一个是开辟新的位置进行操作,这样原数据就不会发生改变,如果没有开辟新的位置(在原数据上进行的操作。

        C#学习笔记-07_第2张图片

 (3)引用参数(并没有创建一个副本):值类型(ref修饰符:故意使用以改变数据)(因为没有创建数据的副本,直接在数据上进行的操作)        

        C#学习笔记-07_第3张图片

(4)引用参数(并没有创建一个副本):引用类型(所有的操作都是在原数据的基础场进行的)(同样的使用 ref修饰符进行修饰)

        C#学习笔记-07_第4张图片

         注意:这种方式虽然与(2)所得到的结果是一致的,但是机理上是有不同的,(2)讲究创建新的副本(B),B和A都指向存储数据的堆内存地址。(4)并没有创建新的副本,A和A^两个是同一个堆内存。

(5)输出参数(不会产生一个副本,out直接返回无需赋值)

        C#学习笔记-07_第5张图片

        输出参数:值类型

        C#学习笔记-07_第6张图片

        C#学习笔记-07_第7张图片

         输出参数:引用类型

         C#学习笔记-07_第8张图片

         C#学习笔记-07_第9张图片

(6)数组参数

        C#学习笔记-07_第10张图片

        (旧版本,复杂方式)

         C#学习笔记-07_第11张图片

        (新的方式,params修饰符修饰)

         C#学习笔记-07_第12张图片

 (7)具名参数:

        C#学习笔记-07_第13张图片

 (8)可选参数:为什么可以选择,因为在声明的时候就有默认值。

        C#学习笔记-07_第14张图片

 (9)拓展方法(this参数)

        拓展方法必须是共有的,静态的(public static)修饰

        必须是形参列表的第一个,由this修饰。

        必须有一个静态类(命名方式:sometypeExtension)来统一收纳对some type类型的拓展方法。

        C#学习笔记-07_第15张图片

 (10)拓展方法:linq方法

        C#学习笔记-07_第16张图片

        C#学习笔记-07_第17张图片

 

 

你可能感兴趣的:(C#基础学习,c#,学习,开发语言)