CLR Via C#个人笔记2 - 类与分配
大章4:类的根基所有类都从System.Object派生 CLR要求所有类最终都从System.Object类派生。无论你的类写不写父类,都会继承自此。注意,通过反编译看构造比较难看出这一点,但是很重要。
System.Object的方法public:
Equals: 没啥好说,如果不重写默认就是判断值是否相等,==判断的是引用地址是否相等。String的比较特殊,微软重写了,所以”AAA” == “AAA”是会返回true的。
GetHashCode: 返回对象的值得哈希码。用的少。
ToString: 返回类型的完整名称(this.GetType().FullName)。经常重写。
GetType: 获取类型,反射常用的。注意它是非虚,目的是不推荐修改。
protected:
MemberwiseClone: 非虚方法。书里讲得不好,简单来说本方法就是浅拷贝。浅拷贝简单理解为只对类里的值类型字段进行逐位复制,而引用类型字段则拷贝引用。引用也新造,就是深拷贝了。
Finalize: 在被GC前,会调用一次这个虚方法。
new Object() ...
王者荣耀复刻项目 UI篇
跳字优化对象池优化制作一个对象池来缓存跳字专用的prefab。
123456789101112131415161718// ---------整体流程方法名(以下只展示方法签名)---------class HPWindow : void SetJumpUpdateInfo(JumpUpdateInfo jui); // 先使用 pool.PopOne() 从对象池获取一个GameObject,再 Show()。class JumpNumPool : JumpNum PopOne(); // Queue弹出一个prefab实例化后的GameObject对象。如果Queue已经空了,就执行CreateOne()新插入一个JumpNum到Queue并初始化,然后弹出返回。class JumpNum : void Show(JumpUpdateInfo ji); // 根据JumpUpdateInfo配置 显示跳字。最后执行Recycle()。class JumpNum : void Recycle(); // 0.75s后执行回收,将GameObject塞回Queue中。// ------ ...
如何使用Hexo?
一.Markdown个人约束
一级标题:# <center>大章:XXX</center>
二级标题:### XXX
三级标题:#### ① XXX
有序内容:1. XXX
无序内容:* XXX
内容:XXX
二.Markdown常用语法
引用内容:> XXX
单行代码:``
多行代码:``````
其他:https://www.jianshu.com/p/a6a6a22e9393
三.Hexo文件头123456789101112title: 如何使用Hexo?cover:https://cdn.jsdelivr.net/gh/CodingCodingK/CodingCodingK.github.io.ImageHost/img/~.pngtags: - Hexo - 技术categories: - Hexo - Hexo1 Hexo2 cover: 文章封面图 top_img: 文章Top图---
CLR Via C#个人笔记1 - CLR基础
大章1:CLR基础CLR是什么
Common Language Runtime 公共语言运行时,CLR和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。
再丢几个概念,除了编译器,另外3个会在下面讲PE文件会提到,因为这3个是托管PE文件的构成部分。
「编译器」检查源代码,确定根据所使用语言语法所写的代码是有意义的,并输出实现其意图的代码。
元数据,每个托管模块都包含元数据表,主要是2种表:描述源代码中定义的类型和成员;描述源代码引用的类型和成员。
IL,中间语言代码,编译器编译源代码时生成的代码。在运行时,CLR将IL编译成本机CPU指令。
PE32或PE32+头,决定程序是以32位还是64位运行的文件头,它和VS中的目标平台中选项(下面叫做**/platform开关选项**)相关联
CLR、程序集是怎么跑起来的① 项目运行流程
Windows检查EXE文件头,决定是创建32位还是64位进程之后,会在进程地址空间加载MSCorEE.dll的对应版本(比如x86版本在%SystemRoot%\Syste ...