1.7 C# 属性以及参数传递

时间:2022-08-29 20:22:45
day 7 属性以及参数传递 1,属性 作用:1,检验数据的合法性 2,保护内部字段不被破坏 属性的语法; 修饰符+数据类型(与字段的类型一致)+字段名(首字母大写) { 属性内部有两个构造器 set{} 出现赋值运算的时候会调用set构造器 get{} 取值的时候会调用get构造器 注意:属性的内部至少存在一个构造器 如果只有set,没有get,该属性为只写. 如果只有get,没有set,该属性为只读. 区分调用set还是get 是否产生赋值运算是判断调用set还是get的依据 属性实际上是特殊的方法 set构造器,是有参数没有返回值的特殊方法,参数为系统关键字value get构造器,是无参数有返回值的特殊方法,返回的是字段 需要注意的是属性不一定和字段是成对儿出现的,两者可以同时存在, 当然也可以不同时存在 }
2.参数传递(实参-->形参) 第一种情况:值传递 值类型作为实参传递给形参的时候,传递的是值得本身,而不是值得地址. 代表:int float double bool struct enum等常见值类型 第二种情况:引用传递(地址传递) 引用类型作为实参传递给形参的时候,传递的是地址. 当然这里面string是一个特殊范例,string虽然本身为引用类型,但是 作为实参传递的时候,默认是值传递 代表:数组 对象
ref指针: 作用:将值传递改为地址传递 用途:如果你想改变一个值类型本身的值,那么在传递的时候需要加上ref 如果你在参数传递的时候,仅仅是为了运算不需要改变原值,那么不需要加上ref out关键字: 作用:将某个值保存到一个变量中 用途:保存结果,实际上相当于函数有返回值.
3.内存分布 栈:栈区存储变量,比如int a = 10; a变量存于栈,10存在常量区. a实际上保存的是常量区10这个值所在的首地址 堆:一般用来存放对象信息(字段,属性,方法,索引器)
4.new关键字 new 一个类实例的时候,系统会在堆区开辟新的内存空间. new 一个结构体实例的时候,系统不会在堆区开辟新的内存空间.
结构体适合小型数据结构,就是不需要耗费内存的那种,常用来做工具使用 比如说向量(x,y,z) 类适合大型数据结构,比如玩家类,需要常驻内存. 结构体不能被继承,但是类可以. 5.内存分布图(掌握)