我刚刚开始使用 C#。我注意到所有值类型都包装到各自的 struct
中。我确实查找了它背后的原因,但找不到太多(也许我没有正确搜索)。我只想问 - 在 C# 中将值类型包装为 struct
而在 Java 中包装类的原因是什么?
编辑:
当我将鼠标悬停在 int
上时,我想它向我展示了这个:http://msdn.microsoft.com/en-us/library/system.int32%28v=vs.71%29 .从评论中,我了解到我在这里可能理解有误。如果 int
没有包含在 struct
中,那么为什么它会显示相关信息?
最佳答案
我相信这只是对 IDE 告诉您的内容的一点混淆。首先,与 Java 不同,int
和 Int32
之间绝对没有区别。它不是同一事物的“原始”和“盒装”版本;简单地说,int
是方便起见的 c# 名称;全名(因为 CLI 支持其他语言等)是 global::System.Int32
;但那只是一个别名;它们是相同的并且可以互换。
其次,struct
是“值类型”的同义词;再次,相同的意思(大部分)。
这里没有换行;当 IDE 谈论“struct Int32”时,它也在谈论“primitive int”。他们是一样的。要点是: int
被视为一个值而不是一个引用,这意味着它是一个“结构”;这就是试图告诉您的所有,即“不是引用”。
关于c# - 结构作为 C# 中值类型的包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11671788/