2012-07-03 28 views
0

在Java的情況下,當我們寫的東西像包裝類在Java中對C#

Integer i = new Integer(20); 

在上述情況下的obj是在堆上分配的C#

Int32 i = new Int32(); 
i=10; 

,並在情況

在這種情況下,對象被分配在堆棧上

這些只是實現的區別w還是有更多的差異?

校正:改變整數到的Int32爲C#

+0

如何爲C#定義'Integer'? (有'System.Int32' /'int',但沒有'Integer')... –

+0

C#沒有明確的類型來表示盒裝原語。這只是一個可以轉換回適當類型的對象。它遠沒有Java那樣複雜。 –

回答

3

有一個在C#沒有Integer,其任一或intint32兩者都是一樣的。就C#而言,「價值類型進入堆棧」有些不正確。你需要看到這篇文章從埃裏克利珀: The Truth About Value Types

編輯:基於評論:

的Int32和INT一樣,兩者是同義的。

+0

更正,意思是Int32在C# – Akash

+0

@Aash,Int32和int是一樣的,兩者是同義詞。 – Habib

+0

@Akash:'int' _is_'System.Int32',它只是一個別名。 –

3

您可能希望在Java中包裝原語的許多原因不適用於C#,因爲C#具有結構而不是原語。以下是一些結構可以用於無法用原生質做的事情:

當他們需要在堆上時,他們可以被裝箱。這個鏈接解釋它http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx