.NET中的类型对象

.NET中的任何类型,都有对应的一个类型对象。类型对象和类型实例(类型建立的一个对象)不是同一个概念。spa

类型对象包含类型的静态字段和方法,当类访问静态方法静态字段,实例调用方法时就会去类型对象中查找静态字段和方法code

 

假设有一个类型叫Animal 那么当咱们使用它以前CLR就会建立一个特殊的对象叫类型对象对象

 

Animal a1 = new Animal();
a1.Eat() //这里访问Eat方法,会先去Animal的类型对象中查找Eat方法,
            //若是以前尚未调用过该方法,那么会先将Eat方法编译成本机代码(已经编译过就不用了)
Animal.Search("老虎") //这边访问静态方法,也是同上面的原理

类型对象能够经过调用GetType()来访问blog

经过上面咱们知道相同类型的类型对象都是同一个也就是说编译

new Animal().GetType()==new Animal().GetType()//true

 

那么类型类型对象自己的类型对象又是什么呢,它实际上是Type对象,换句话说任何对象的类型对象的类型对象都是同一个,它本身的类型对象时它自己class

new People().GetType().GetType()==new Clothes().GetType().GetType()//true
相关文章
相关标签/搜索