1

我刚刚开始使用 C#。我注意到所有的值类型都被包装到各自struct的 s. 我确实查找了它背后的原因,但找不到太多(也许我没有正确搜索)。我只是想问一下 - 与structJava 中的包装类相比,值类型在 C# 中被包装为 s 的原因是什么?

编辑:

当我将鼠标悬停在 上int时,我想它向我展示了这个:http: //msdn.microsoft.com/en-us/library/system.int32%28v=vs.71%29。从评论中,我知道我可能在这里理解了一些错误。如果int未包含在 that 中struct,那么为什么它会显示有关该信息的信息?

4

1 回答 1

9

相信这只是对 IDE 告诉你的内容有点困惑。首先,与 Java不同,和之间绝对没有区别。这不是同一件事的“原始”和“盒装”版本。简单来说,是为方便起见的 c# 名称;全名(因为 CLI 支持其他语言等)是;但这只是一个别名;它们是相同且可互换的。intInt32intglobal::System.Int32

其次,struct是“value-type”的同义词;再次,相同的含义(大部分)。

这里没有包装;当 IDE 谈论“struct Int32”时,它也在谈论“primitive int”。他们是一样的。要点是:int被视为值而不是引用,这意味着它是一个“结构”;这就是试图告诉你的所有内容,即“不是参考”。

于 2012-07-26T14:49:26.067 回答