我刚开始使用C#。我注意到所有的值类型都包含在各自的struct
中。我确实查找了它背后的原因,虽然找不到多少(也许我没有正常搜索)。我只是想问一下 - 在C#中将值类型包装为struct
的原因是什么,而不是Java中的包装类?
编辑:
当我将鼠标悬停在int
上时,我猜它会显示给我:http://msdn.microsoft.com/en-us/library/system.int32%28v=vs.71%29。从评论中我知道我可能在这里理解错误。如果int
没有包含struct
,那么为什么会显示相关信息呢?
答案 0 :(得分:9)
我相信这只是对IDE告诉你的内容有点困惑。首先,与Java不同,int
和Int32
之间存在绝对无差异。 不是同一件事的“原始”和“盒装”版本;简单来说,int
是方便的c#名称;全名(因为CLI支持其他语言等)是global::System.Int32
;但那是只是别名;它们是相同的,可互换的。
其次,struct
是“value-type”的同义词;再次,同样的意思(主要是)。
这里没有包装;当IDE谈到“struct Int32”时,它也在谈论“原始int”。他们是一样的。重点是:int
被视为一个值而不是一个引用,这意味着它是一个“结构”;那是所有试图告诉你的,即“不是参考”。