【问题标题】:struct as wrapper for value types in C#struct 作为 C# 中值类型的包装器
【发布时间】:2012-07-25 04:28:47
【问题描述】:

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

编辑:

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

【问题讨论】:

  • “值类型被包装到各自的结构中”是什么意思?
  • “值类型”和“结构”是同义词...
  • @KirkWoll 当我在 Visual Studio 中输入 int 并将鼠标悬停在它上面时,它会显示类似 struct System.Int32 的内容。(可能是错误的,但我确定我确实在那里看到了 struct) .
  • 但是,@KazekageGaara 没有被包装int System.Int32 - 它们是相同的,一回事,别名
  • 我猜当我将鼠标悬停在int 时,它会显示:msdn.microsoft.com/en-us/library/system.int32%28v=vs.71%29

标签: c# .net wrapper


【解决方案1】:

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

其次,struct 是“值类型”的同义词;再次,相同的意思(大部分)。

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

【讨论】:

  • 谢谢。这说明了很多。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 2016-12-29
  • 2023-03-09
  • 2017-07-31
  • 2022-12-07
相关资源
最近更新 更多