值类型和原始类型之间有什么区别?

15 c# language-agnostic primitive-types

阅读一本关于C#的书我注意到有时会提到一些数据类型的值类型和有时是原始类型(例如int,double).我以为它们是同一个东西,但它们真的相同或不相同?

值类型和基本类型有什么区别?它们是一样的吗 ?

编辑

这个问题不仅与C#编程语言有关,我还想知道它们在任何其他语言中是如何不同的......

D S*_*ley 7

原始类型(例如int)可以直接映射到基类库(BCL)类型(例如System.Int32

值类型继承于值System.ValueType并通过值传递(以及其他属性)。

它们不可互换,因为objectSystem.Object)是原始类型但不是值类型,而struct是值类型但不是原始类型。

在这里查看更多差异

  • 答案只涵盖C#和.NET,在其他语言中是一样的吗?看看问题的标签... (2认同)

ale*_*oot 6

值类型通常是Stack上的任何类型。

基本类型是在编程语言级别定义的类型,通常甚至是值类型,语言的编译器直接支持该类型。

但是,这是一个概括性的概括性答案,因为每种编程语言在两种类型之间都有不同的区别集...

  • -1-除了Eric Lippert将此关于堆栈的观点称为“神话”,他可能应该知道:http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-值类型 (5认同)
  • @JamesGaunt是的,这对于C#可能是正确的,但对于Java或ANSI C而言可能是正确的?您确定我的答案是错误的吗? (2认同)