【发布时间】:2009-10-21 09:05:36
【问题描述】:
我一直试图了解 Java 和 C# 中“原语”的使用以及它们之间的区别(如果有的话)。我已经就 SO 提出了一系列问题,其中一些答案似乎混淆了这个问题,而不是澄清它。一些答案(和一些 MS 文档)似乎提供了相互矛盾的陈述。来自 SO
来自 MS:http://msdn.microsoft.com/en-us/library/ms228360%28VS.80,lightweight%29.aspx
- “结构与类非常相似”
- “Int32 类包装了 int 数据类型”
- “另一方面,C# 中的所有原始数据类型都是 System 命名空间中的对象。对于每种数据类型,都提供了一个短名称或别名。例如,int 是 System.Int32 的短名称” .
我的困惑主要在于 C#(我已经编写了一段时间的 java 程序)。
编辑以下段落已被@Jon Skeet 确认是正确的
- Java 有两种类型(原始类型和类)。 “值类型”这个词可能是原始(虽然没有广泛使用)的同义词,也是类的“引用类型”的同义词。 Java 在类 (Integer) 中“包装”原语 (int),这些类具有任何其他类的完整功能(可以为 null,用于集合等)
编辑 @Jon 对 C# 给出了非常明确的声明,所以我将删除我建议的事实并参考他的回答。
进一步的问题:对于这些术语的实际使用应该是什么达成共识?如果有共识,我将非常感谢明确说明。否则,我认为术语是混乱的,因此用途有限。
总结感谢您提供非常明确的答案。真正理解这一点的人达成了共识(参见@Jon 接受的答案),MS 文档是一致的(尽管它们在某些地方提到了 Java,而我误读了 C#)
【问题讨论】:
标签: c# java struct primitive value-type