在Java的情况下我们写了类似
的东西Integer i = new Integer(20);
在上面的例子中,obj在堆上分配
如果是C#
Int32 i = new Int32();
i=10;
在这种情况下,对象在堆栈上分配
这些只是实施方面的差异还是存在更多差异?
更正:将整数更改为Int32 for C#
答案 0 :(得分:3)
C#中没有Integer
,其int或int32都是相同的。关于C#说“值类型转到堆栈”是一些不正确的。你需要看看Eric Lippert的这篇文章:
The Truth About Value Types
编辑:根据评论:
Int32和int相同,两者是同义词。
答案 1 :(得分:3)
您可能希望在Java中包装基元的许多原因不适用于C#,因为C#具有结构而不是基元。以下是一些可用于结构的东西:priveives无法实现的结构:
当堆上需要它们时,它们可以装箱。此链接说明了它http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx。