在阅读一本关于C#的书时,我注意到有时会提到某些数据类型(例如int、double)的值类型和原始类型。我以为它们是同一件事,但它们真的相同吗?
值类型和原始类型有什么区别?它们是同一件事吗?
编辑
这个问题不仅与C#编程语言有关,我想知道它们在任何其他语言中的区别。
在阅读一本关于C#的书时,我注意到有时会提到某些数据类型(例如int、double)的值类型和原始类型。我以为它们是同一件事,但它们真的相同吗?
值类型和原始类型有什么区别?它们是同一件事吗?
编辑
这个问题不仅与C#编程语言有关,我想知道它们在任何其他语言中的区别。
原始类型(例如 int )可以直接映射到基类库(BCL)类型(例如
System.Int32 )
值类型从 System.ValueType 继承,并按值传递(除其他属性外)。
它们与 object ( System.Object )不可互换,因为 object 是原始类型,但不是值类型,而结构是值类型但不是原始类型。
在此处查看更多区别。
值类型通常是存储在堆栈上的任何类型。
原始类型是在编程语言级别定义的类型,通常甚至是一个值类型,并直接由语言的编译器支持。
然而,这只是一个概括性的答案,因为每种编程语言在这两种类型之间都有不同的差异集...
不,它们并不相同。值类型被复制,引用类型则被引用。请见以下图片
编辑 我犯了一个错误。这里有一个关于这些区别的教程: http://www.codeproject.com/Articles/11212/Primitive-Reference-and-Value-Types