2015-04-17 39 views
1

有一個簡單的問題,我想我知道答案,但我不想聽到其他人的 。C#中的typeof(int)和typeof(Int32)之間的差異可能嗎?

比方說,我會創建一個通用的功能:

public string GetTypeName<T>() 
{ 
} 

它應該返回類型T的名字,這是很容易:

return typeof(T).Name 

在這一點上,我們可以忽略,這對於泛型類型不起作用,這不是問題的主題。

我的問題是:如果有人致電這樣的功能:

GetTypeName<int>() 

它應該返回 「INT」。

如果有人調用該函數那樣:

GetTypeName<Int32>() 

它應該返回 「的Int32」。

但我認爲那是不可能的吧?

感謝您的回答!

+5

沒有任何區別。 'int'只是'Int32'類型的C#別名,而typeof總是返回'Int32'而不是'int' –

+0

作爲一個方面說明,問題第一部分中描述的函數編譯得很好。 https://dotnetfiddle.net/TzCXuq – David

回答

6

區別是不可能的,因爲區別不存在。

int是一個關鍵字,編譯器解釋爲global::System.Int32類型爲快捷鍵或語法糖。換句話說,在運行時和.NET框架本身中,不存在int類型,只有Int32

這同樣適用於所有具有關鍵字的類型 - 見MSDN完整列表及其等價物