CLR via C#读书笔记二:类型基础

1、CLR允许将对象转换为它的(实际)类型或者它的任何基类型。

2、is操作符检测对象是否兼容于指定类型,is操作符永远不抛出异常。

3、as操作符返回对同一个对象的非null引用。如果对象不兼容,as返回null。as操作符的工作方式与强制类型转换一样,只是它永远不抛出异常——相反,如果对象不能转型,结果就是null。

4、c# using指令的另一种形式允许为类型或命名空间创建别名,

如:

using  WintellectWidget=Wintellect.Widget;
public sealed class Program
{
  public static void main()
  {
    WintellectWidget w=WintellectWidget();
  }
}

5、命名空间还可以如下使用:

namespace CompanyName
{
    public sealed class A
    {

    }
    namespace X{
        public sealed class B{  }   //TypeDef:CompanyName.X.B
    }
}

6、类方法中的局部变量和值类型都放在线程栈中,引用对象的变量(实际就是指针吧?)也放在线程栈中,而对象实例放在托管堆中。

7、堆上所有对象都包含两个额外成员:类型对象指针(type object pointer)和同步块索引(sync block index)。类型对象指针指向和对象对应的类型对象(一个System.Type的实例);

8、CLR在执行指令时,会利用程序集的元数据,提取这些指令中所有类型的有关信息,创建一些数据结构来表示类型本身;(看书90~97页讲述执行方法时,CLR是如何在堆中工作的)

9、类型对象实际是System.Type类的实例。

原文地址:https://www.cnblogs.com/yuzhoumanwu/p/8526699.html