2015-10-02 57 views
2

我正在尋找一個unamiguous信息在C#((原始)積分類型(如byteshortintlong等)的比特寬度,從而映射是否CLI固定寬度的類型,如ByteInt16Int32,Int64,...)是固定的(永遠),或者將來可能會改變(語言版本),我們可能會遇到類似於C/C++的情況,其中內建類型爲至少N位寬內置整數值類型的位寬是否固定?

的動機是:我們可以安全地使用C#.int爲使用32位其值的整數類型,或者是它更好地只是使用CLI.Int32因爲我們想要的是32位的情況下?

+3

int與Int32相同,它只是一個別名。 'int n'與'Int32 n = new Int32()' –

+0

相同檢查[C#Language Specification](https://www.microsoft.com/zh-cn/download/details.aspx?id=7029) ,第4.1.5節。例如。 「int'類型表示值爲-2147483648和2147483647之間的帶符號32位整數」 –

+0

因此,據推測在CLI引入Int128的情況下,C#引入了新別名而不是移動當前別名,對吧? – sharpener

回答

3

的動機是:我們可以安全地使用C#作爲.INT使用32位其值整體式 ,還是更只使用CLI.Int32爲 正是我們想要的32位的情況下?

從技術上講,它們是相同的。

int等於Int32

爲什麼我們不能代表同一類型的兩個不同的名字呢?這個想法是基本類型可能是最常用的類型,所以C#團隊爲這些類型創建了別名,以便更快地編寫代碼。

基於上述,聲明int n相當於Int32 n = new Int32()

還要注意,C#特徵的CLI的特徵唯一子集。這意味着在CLI中可能有類型,這些類型不是用C#實現的,反之亦然。例如,在CLI中沒有UInt32(無符號整數),但是在C#中它有。

基於上述情況,如果在CLI或C#中實現新類型,這並不意味着它將在相反的情況下實現。另外,我不相信有人會改變現有類型的實現,因爲這會破壞兼容性。