.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
相關文章
相關標籤/搜索