0

在 Java 的情况下,当我们编写类似的东西时

Integer i = new Integer(20);

在上述情况下,obj 是在堆上分配的

如果是 C#

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

在这种情况下,对象被分配在堆栈上

这些只是实施方式上的差异还是还有更多差异?

更正:将 Integer 更改为 C# 的 Int32

4

2 回答 2

3

C#中没有Integer,它要么是int要么是int32,两者都是一样的。关于 C# 说“值类型进入堆栈”有些不正确。您需要查看 Eric Lippert 的这篇文章: 关于值类型的真相

编辑:基于评论:

Int32 和 int 是一样的,两者是同义词。

于 2012-07-03T04:36:37.890 回答
3

您可能希望在 Java 中包装原语的许多原因不适用于 C#,因为 C# 具有结构而不是原语。以下是结构体可以用来做的一些事情,而这些事情不能用 prmitives 来完成:

当堆上需要它们时,可以将它们装箱。此链接解释它http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx

于 2012-07-03T04:50:16.423 回答