C#结构、垃圾回收、析构函数

使用struct关键字来定义1个结构. 级别与类保持一致 写在命名空间下面.结构中可以定义 字段 属性 方法 构造函数 也可以通过new关键字来创建对象.
    1. 结构中的字段不能赋初始值.
    2. 无参数的构造函数无论如何C#编译器都会自动生成,所以我们不能为结构定义1个无参数的构造函数.
    3. 在构造函数中必须要为结构体的所有的字段赋值.
    4. 在构造函数中为属性赋值 不认为是对字段赋值 因为属性不一定是去操作字段.
    5. 结构是1个值类型的.在传递结构变量的时候 会将结构对象里的每1个字段复制1份然后拷贝到新的结构变量的字段中.
    6. 不能定义自动属性 因为自动属性会生成1个字段 而这个字段必须要求在构造函数中 但是我们又不知道这个字段叫声明名字.
    7. 声明结构体对象可以不使用new关键字.但是这个时候结构体对象的字段没有初始值.因为没有调用构造函数.而构造函数中必须为字段赋值 
         所以通过new关键字创建结构体对象 这个对象的字段就有默认值了.
    8. 当我们要表示1个轻量级的对象的时候 就可以定位结构 以提高速度. 根据传值的影响来选择 希望传引用就定义为类 希望传拷贝就定位为结构.

    类和结构最大的区别是:一个是值类型一个是引用类型
 
 

托管代码.被CLR管理的代码
非托管代码.不被CLR管理的代码
 应用程序域: 

分配在栈空间的变量 一旦执行完其所在的作用域 这个变量就会被CLR立即回收.
分配在堆里面的对象 当没有任何变量引用它的时候,这个对象就被标记为"垃圾对象",等待垃圾回收器回收.
GC会定时的清理堆空间中的垃圾对象.
GC清理垃圾对象的频率 程序员无法决定 CLR会自动控制.
当1个对象被标记为"垃圾"的时候,这个对象不一定会被立即回收.
GC.GetGeneration(p); 得到指定的对象所在的代
GC.MaxGeneration;返回代数. 
GC.Collect(); 立即让垃圾回收器对所有的代进行回收.
GC.Collect(int gen); 对指定的代立即进行垃圾回收.

 

析构函数
不能有访问修饰符 不能有参数
在对象被垃圾回收器回收的时候 析构函数被GC自动调用.
 执行一些清理善后的操作的时候,

 ~Person()
 {
      Console.WriteLine("我是析构函数.");
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值