c# - 结构作为 C# 中值类型的包装器

标签 c# .net wrapper

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

编辑:

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

最佳答案

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

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

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

关于c# - 结构作为 C# 中值类型的包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11671788/

相关文章:

c# - 使用 HtmlAgilityPack 确定字符串是否仅包含允许标签列表中的标签

c# - 如何在 .net Windows 应用程序中存储数据

c# - 使用反射将通用类字段解析器转换为 Dictionary<String, String>

c# - 使用 Lambda 获取属性名称列表

python - 谁删除了python中的内存?

c++/cli dll 包装器,用于在 LabView 中使用的原生 c++

c# - 在C#中使用OpenSSL库的SHA256方法

c# - 在鼠标悬停时使标签下划线

c# - C# 中的数字格式 - 单独的 int 和小数部分

c# - HttpWebResponse 超时