对c#底层不太了解,可能认识有误或者浅薄,欢迎斧正。

10  boxing 装箱

@1被装箱的值是初始化值的一个副本。---常见的一个应用是传参。

@2什么时候发生装箱:

          #1值类型转换成引用/System.ValueType/指向值类型实现的接口引用

          #2 枚举转换成System.Enum 引用

为什么要装箱? 从技术上说 直接获得一个值类型的引用是不可能的。

因为值存放在栈中,他在栈中的位置是变化的,有可能引用一个为空的栈的位置。所以我们要装箱。

 

@3CLR里拆箱低效的根源在于拆箱和一个值副本组合在一起

 

11所有的类都派生自object 所有都可以隐式转为 object然后统一对待。

                                        比如接口+泛型强大的Repository 中就用了模板加object统一对待所有的。

12System.Object 基类 

 我们应该了解一下基类里面有什么。以后等我看到了相关的知识再继续分享对基类的认识。

 

  ===============================================================
名称 说明
Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3 Object 初始化 Object 类的新实例。
页首
公共方法

(请参见 受保护的方法 
  名称 说明
Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3 Equals 已重载。 确定两个 Object 实例是否相等。
Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3 GetHashCode 用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。
Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3 GetType 获取当前实例的 Type
Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3 ReferenceEquals 确定指定的 Object 实例是否是相同的实例。
Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3 ToString 返回表示当前 Object 的 String
 
受保护的方法

  名称 说明
Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3 Finalize 允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。
Accelerated C#2008读书笔记3Accelerated C#2008读书笔记3 MemberwiseClone 创建当前 Object 的浅表副本。


  ===============================================================

 

13 对象的创建

@1对于值类型 new 会完全初始化 (所有位置0)

@2类的初始化除非没有其他重载的构造函数 才有默认的构造函数

 

14字段的初始化

@1从该类开始 初始化静态变量=》@2初始化父类的静态变量=》@3带 函数表达式 赋值的成员变量 =》构造函数

(有点模糊)

 

15类的析构

对于 object 类里 的Finalize 方法最好不要重写。否则会有不确定性的删除,因为会涉及到其他的类。

如果你想主动释放资源,可以使用 IDisposable( 定义一种释放分配的资源的方法。)

 

 

对c#底层不太了解,可能认识有误或者浅薄,欢迎斧正。

参考引用了MSDN

 

相关文章:

  • 2021-05-08
  • 2021-09-19
  • 2022-01-01
  • 2021-12-24
  • 2022-02-22
  • 2022-01-10
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-21
  • 2022-12-23
  • 2021-06-29
  • 2022-02-16
  • 2021-11-06
  • 2022-12-23
  • 2021-06-03
相关资源
相似解决方案