![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CLR via C#
文章平均质量分 84
东北砍王
做游戏,是种梦想!
展开
-
CLR via C#-基元类型、引用类型和值类型
值类型实例大小也在考虑范围之内,实参默认以传值方式传递,造成对值类型实例中的字段进行复制,对性能造成损害。值类型总是包含基础类型的一个值,所有成员都初始化为 0,访问不会造成空异常。e.将值类型变量赋值给另一个会进行逐字段的复制。f.未装箱的值类型不在堆上分配,一旦定义了该类型的一个实例方法不再活动,为他们分配的存储就会被释放。值类型的实例不包含指向实例的指针,包含了实例本身的字段。c.不能在值类型中引入任何新的虚方法,所有的方法都不能是抽象的。如果不指定,编辑器会自动选择,一般引用类型是a,值类型是b。原创 2022-12-18 16:57:16 · 356 阅读 · 0 评论 -
CLR via C#-托管堆和垃圾回收
目的:如何构造新对象,托敢对如何控制这些对象的生存期,以及如何管理这些对象的内存托管堆基础每个程序都需要使用资源,比如:文件、内存缓冲区、屏幕空间、网络连接、数据库资源等等面向对象编程中,每个类型都是一种资源,如何访问资源?a.调用 IL 指令 newobj,为代表资源的类型分配内存b.初始化内存,设置资源的初始化状态并使用(每个类型实例构造器负责设置初始状态)c.访问类型的成员来使用资源d.摧毁资源的状态进行清理(unsafe资源需要)e.释放内存。垃圾回收器负责如何从托管堆分配内存?C原创 2022-12-06 18:37:16 · 357 阅读 · 0 评论 -
CLR via C#-CLR的执行模型
比如说这里面 引用了 Console 类型,CLR 会产生一个 Console 结构,Console 的每个方法都有一个 Entry ,每个 Entry 都有一个地址,根据地址可以找到方法的实现。b.CLR头:CLR版本,标识,托管模块入口 Main 方法的 MethodDef 元数据,以及模块的元数据、资源、强名称、一些标识以及其他不太重要的数据项的位置/大小。在 Main 执行之前,CLR 会检测出 Main 的代码引用的所有类型,需要分配一个内部数据结构来管理对引用类型的访问。原创 2022-12-05 19:04:30 · 553 阅读 · 0 评论