2010-08-07 96 views
8

我做了一些分類,我不知道:c# - 是SHORT數據類型還是INT?

INT與關鍵字「INT」

原始數據類型,但我可以用Int16的,的Int32或Int64的 - 我知道C#有它自己的名字爲他們。但是,這些數據類型還是INT?主要是,我們可以說「short」是一個數據類型還是INT16是一個數據類型? 謝謝:)

回答

21

在C#中,下面的事情總是如此:

  • short == Int16
  • ushort == UInt16
  • int == Int32
  • uint == UInt32
  • long == Int64
  • ulong == UInt64

兩個版本的數據類型。以上都是各種長度和符號的整數。

兩個版本之間的主要區別(據我所知)是他們在Visual Studio中突出顯示的顏色。

+0

顏色可能與它們是否是關鍵字有關。所以你可以命名一個變量'Int32',但不是'int'。 – Philipp 2010-08-07 16:45:12

+0

區別在於左列包含本機C#名稱,這是更可取的。例外是調用這些類的靜態方法和屬性,這應該是CLR名稱。 – 2010-08-07 16:46:15

+0

@菲利普啊,這是真的。我沒有想到這一點。不是你應該命名一個變量Int32! ;) – 2010-08-07 16:46:22

3

short是一種表示16位整數(低於int,即32位)的數據類型。

Int16實際上也是數據類型,與short同義。也就是說,

Int16.Parse(someNumber); 

也返回一個short,一樣:

short.Parse(someNumber) 

上也是如此Int32intInt64long

2

在C#中,int只是說System.Int32更短的方式。

在.NET中,甚至基本數據類型實際上都是對象(從System.Object派生)。

因此,C#中的int = VB.Net中的整數= System.Int32。

有這裏所有的.NET數據類型的圖表:http://msdn.microsoft.com/en-us/library/47zceaw7%28VS.71%29.aspx

這是.NET Common Type System允許.NET語言之間的無縫互操作的一部分。

+0

「在.NET中,即使原始數據類型實際上也是對象」,你確定嗎?我一直認爲基元不是從對象派生出來的,而且從對象轉換到對象需要裝箱和拆箱(c#編譯器從你那裏隱藏起來,但仍然發生在IL級別上,舊的託管C++(在C++/CLI之前)使用__box和__unbox或類似的東西) – 2010-08-07 17:14:17

+0

@Ben:這是Java。在.NET中,值類型可以被存儲,解除包裝,但它們仍然是從'System.Object'派生的,所以它們總是可以在需要Object的地方使用。而且,是的,這意味着它們會自動裝箱,盒裝版本是從「Object」明確派生的。 – 2010-08-07 17:18:21

+0

我認爲你是對的。在幕後,int通常是一個4字節的內存,但在邏輯上它是一個從對象派生的結構,並且必要的自動裝箱恰好保持了這種外觀。所以真的,它是否是一個對象取決於你所說的概念層面。 – 2010-08-07 17:27:14

0

在其他答案中沒有提到的是值類型System.IntPtr,它的位寬是特定於平臺的;例如在32位系統上,它是32位寬,而在64位系統上,它是64位寬。

話雖這麼說,所有我能收集這些類型並不意味着代替任何其他int類型的實際使用;它的主要用途可能在於對底層系統API的P/Invoke,它通常用於保存指針

相關問題