struct作为C#中值类型的包装器

时间:2012-07-26 14:40:12

标签: c# .net wrapper

我刚开始使用C#。我注意到所有的值类型都包含在各自的struct中。我确实查找了它背后的原因,虽然找不到多少(也许我没有正常搜索)。我只是想问一下 - 在C#中将值类型包装为struct的原因是什么,而不是Java中的包装类?

编辑:

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

1 个答案:

答案 0 :(得分:9)

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

其次,struct是“value-type”的同义词;再次,同样的意思(主要是)。

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