2012-04-16 16 views
1

例如當T本身是一個類型時,爲什麼必須使用typeof(T)來獲得Type?

Type t = typeof(T); 
t.GetProperty("Company") 
+0

歡迎使用StackOverflow:如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後在編輯器工具欄上單擊「代碼示例」按鈕(「{}」)格式和語法突出顯示它! – 2012-04-16 07:28:36

+1

你在說什麼編程語言? – Jeffrey 2012-04-16 07:29:26

+0

並且還使用您正在使用的編程語言的標記。 – Naveen 2012-04-16 07:29:34

回答

7

因爲T不是Type對象,它只是一個類型參數。

在編譯時,類型參數將被實際類型替換。例如,對於string類型生成的代碼,typeof(T)實際上是typeof(string)。這裏string不是Type對象,它只是一個數據類型。您需要typeof才能獲取該數據類型的Type對象。

+0

ok Guffa ...所以你的意思是typeOf(T)給我們**類型T的對象**。 。我很好的說我? – 2012-04-16 07:49:02

+0

@UmeshK:不,'typeof(T)'給你一個'Type'對象,它描述了'T'類型。例如'typeof(string)'返回與'「」.GetType()'相同的值。 – Guffa 2012-04-16 08:01:44

+0

我在說「T型對象」,你說它是「類型對象,它描述了T型」..所以兩者都是同樣的東西.. – 2012-04-20 07:27:20

1

因爲類型與描述類型的對象之間存在差異。

T是一種類型。 typeof應用於某個類型,並返回Type類型的對象,其中描述了該類型。

0

另一個試圖解釋的區別:

有編譯時類型,如stringintMyClass。您在編寫代碼時宣佈了它們。

有運行時間類型。它們被保存在Type類型的對象中。這些是運行時在內存中存在的普通對象實例。你可以通過typeof(MyType)得到這樣的對象。這些類型的對象可以用來在運行時檢查類型。

相關問題