2017-08-12 117 views
4

我正在閱讀書CLR via C#Jeffrey Richter類型定義和類型引用有什麼區別?

Chapter 23(23.3.2),它說"A System.Type object represents a type reference(as opposed to a type definition)."

什麼類型引用和類型定義的意思嗎?

+0

這是CLR規範可能會受到太多影響的語言。組件中的元數據區分了TypeDef和TypeRef。您可以使用C#中的類,結構或委託關鍵字獲取類型聲明的TypeDef。一個TypeRef出現在你使用的地方*在別處聲明的類型。比如你使用Object.GetType()或者typeof關鍵字。 –

回答

1

作者對比System.TypeSystem.TypeInfo。從the documentation

甲所屬類別對象表示類型定義本身,而類型對象表示參考類型定義

對於類的System.TypeInfo只能在實現類(類型定義)的程序集加載或加載時才能實例化。爲了實例化System.Type,唯一的要求是當前程序包含執行程序集的參考

另請參見What's the difference between Type and TypeInfo?

+0

這個「參照」在「參考和指針」中有相同的概念嗎? @John Wu –

+0

排序,但不是指向內存地址,類型引用指向程序集(包括版本和強名稱(如果適用))和類型名稱。 –

0

當您通過類,結構,接口或枚舉定義新類型時,會發生類型定義。

類型引用是關於類型的信息的集合,例如,其名稱或其成員。

System.Type類能夠表示類型,但不能定義類型。 當您致電typeof(TypeName)object.GetType()時,您將處理類型爲System.Type的對象的表示形式。

只能使用System.Type對象,不能直接實例化某個類型的對象。它只描述類型,但不是的類型。這就是爲什麼它被稱爲參考。

0

A 類型定義意味着該類型的實際實現,例如,如果它是一個類,則表示類(具有其所有屬性和字段)的定義。

A 類型參考,僅僅意味着System.Type包含特定類型的細節,也就是說,它是關於類型的元數據。

相關問題