《CLR via C#》第四版 阅读笔记
《CLR via C#》第四版 阅读笔记
Moaa
写写日常笔记
展开
-
is 和 as 的区别
上述代码中,CLR实际检查两次对象类型。如果是,在if语句块内部转换,CLR再一次核实o是否引用一个Student。CLR的类型检查增强了安全性,但无疑会对性能造成一定的影响。然后,CLR必须遍历继承层次结构,用每个基类型去核对指定的类型Student。如果对象不能转换,返回null,所以正确做法就是检查最终生成的引用是否null。上述代码中,CLR核实s是否兼容于Student类型,。若是,as 返回对同一个对象的非null引用。如果对象引用null, is 返回false,因为没有可检查其类型的对象。原创 2023-05-16 21:24:01 · 225 阅读 · 0 评论 -
C# 类型转换
CLR最重要的特性之一就是类型安全。在运行时,CLR总是知道对象的类型是什么。调用GetType方法可知道对象的确切类型。由于它是一个非虚方法,所有一个类型不可能伪装成另一种类型。例如,Student类不能重写GetType方法返回一个Teacher类型。CLR允许将对象转换为它的实际类型或者它的基类型。C#认为向基类的转换是一种安全的隐式转换。但将对象转换为它的某个派生类时,C#要求开发人员只能进行显式转换,因为这种转换可能在运行时失败。原创 2023-05-16 19:30:11 · 114 阅读 · 0 评论 -
new 操作符所做的事情
new 操作符没对应的delete操作符,没有办法显式的释放对象分配的内存。CLR采用了垃圾回收机制,能自动检测到一个对象不再被使用,并自动释放该对象的内存。new 执行了所有这些操作之后,返回指向新建对象的一个引用(或指针),原创 2023-05-15 22:53:02 · 112 阅读 · 1 评论