.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