初识c#---属性和参数传递

xiaoxiao2021-02-28  105

   1.属性     作用:1.校验数据的合法性             2.保护内部字段不被破坏(封装性)             3.属性是为了拦截字段             4.属性是为了拦截字段在赋值的时候,做一些操作来保护字段的合法性            实际上属性就是特殊的方法,因为属性内部提供了两个构造器            一个是set构造器,一个是get构造器            我们可以认为:             set构造器实际上就是一个方法而已,有参无返回值方法             value就是参数             get构造器也是方法,无参有返回值  属性的语法:   修饰符 + 数据类型(如果你有对应的字段,此时数据类型要和字段的类型保持一致) + 字段名(首字母大写)     {           //属性内部有两个构造器           set{}           //set:出现赋值运算的时候会调用set构造器           //get{}           //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)   类适合大型数据结构,比如玩家类,需要常驻内存.   结构体不能被继承,但是类可以.  
转载请注明原文地址: https://www.6miu.com/read-53515.html

最新回复(0)