一.属性
引入
类里面是使用字段来描述其特征的, 而字段可以使用修饰符来修饰, 如果使用private 修饰时, 该字段是无法在类的外部被访问到的. 那么如果我们就是想要在类的外部访问该字段怎么办呢?
可以通过使用方法来访问类里的字段;
class
衍生: 上述例子中, 我们给name字段定义了Set和Get两个方法, 这样一来对于name这个私有物来说我们就既可以读又可以写了. 那么以此类推, 只有Set方法就是只能写, 只有Get方法就是只能读;
假如我们现在有100个字段是私有的, 那么就得自己定义100个Set方法和100个Get方法, 代码实在繁琐, 不过好在C#已经设计了一种get和set方法的简写格式, 称为属性.
属性的本质就是Set和Get方法
语法格式
public
例如给上述的name设置一个属性
public
简写:
属性有其他更为简单的写法, 代码如下:
public
虽然没有写字段, 但编译器在后台会自动生成名称类似于_brand的字段, 用来存储Brand的相关信息. 但是这种简写的方式get和set必须同时存在, 缺一不可, 如果想要变成只读或者只写, 需要在get 或set 前面加private修饰符.
public
二.值类型和引用类型
系统区:
栈区(系统开辟系统回收 开辟的空间比较小);
堆区(手动开辟存储空间 开辟存储空间比较大);
静态区 static 修饰 需要等程序执行完毕才会回收空间(所以如果不是特别需要 尽量不要设置static);
代码区(存放代码的);
常量区(常量);
数据类型:
值类型: 基本数据类型, 枚举吗结构体等:
引用类型: 使用new开辟的都是引用类型, string(特殊的引用类型), 数组类型, 类, 接口, 委托等;
值类型被开辟到栈区; 引用类型被分配搭配堆区;
值类型和引用类型的区别:
如下图:
值类型在变量在进行赋值操作的时候是重新给变量开辟一个存储空间, 只将数值复制一份给新变量.
引用类型变量在进行赋值操作的时候没有重新开辟存储空间, 而是将新的变量也指向原存储空间, 这样新的和原来的变量就都可以对这一存储空间进行操作, 也就是说引用类型的修改会相互影响, 一个改变则指向该空间的所有变量也跟着改变;
三.方法参数 (ref /out /params)
ref 将值类型转成引用类型, 实参和形参都需要加;
练习:定义一个方法, 实现两个数的交换
// 定义方法
out 输出型参数 帮助我们携带一个参数, 实参形参都要添加
练习: 定义一个方法求长方体的体积和面积
// 定义方法
params 数组型参数
调用:
- 什么也不传;
- 直接传具体的数值;
- 直接传递数组;
- 注意, 当params 类型的参数和其他参数一起使用时, 数组型参数必须放在最后!
练习:
// 定义方法
=======================================================
思维导图