可能重复:
What are the differences between value types and reference types in C#?
值类型和重新引用类型之间的基本差异是什么
答案 0 :(得分:17)
考虑两个变量:
SomeReferenceType x;
SomeValueType y;
x
的值是一个引用 - 它将为null或对对象的引用,该对象本身是SomeReferenceType
的实例或派生类。 x
的值本身不是对象。
y
的值是数据本身 - 如果SomeValueType
有三个字段,y
的值将直接包含这些字段。
这是一个非常简短的摘要 - 有关详细信息,请参阅Eric Lippert's blog post about value types和my article。 (您可能也对我关于parameter passing的文章感兴趣,这篇文章是相关的,但并不完全相同。)
答案 1 :(得分:7)
如名称所示,值类型是存储在内存中的值;引用类型是(一种)指向对象(类,对象等)的指针
来自Microsoft:
如果数据类型将数据保存在自己的内存分配中,则数据类型是值类型。引用类型包含指向另一个保存数据的内存位置的指针。
值类型
值类型包括以下内容:
参考类型
参考类型包括以下内容:
答案 2 :(得分:2)
引用类型的变量(称为对象)存储对实际数据的引用,有关详细信息,请参阅here。它们包括类,接口和委托。
来自MSDN:
值类型是结构和 枚举。变量是 基于值类型直接包含 值。分配一个值类型 变量到另一个副本 包含的价值。这不同于 分配参考类型 变量,复制引用 对象但不是对象本身。 所有值类型都是隐式派生的 来自
System.ValueType
。不像 有了引用类型,你就不能 从值类型派生新类型。 但是,像引用类型,结构 可以实现接口。不像 引用类型,值类型不能 包含空值。然而 可空类型功能允许 要赋值为null的值类型
答案 3 :(得分:1)
当你有一个值类型的变量时,该变量直接保存一个值。如果将其分配给另一个变量,则直接复制该值。当变量属于引用类型时,它不直接保存该值,而是指向该值的引用(指针)。复制变量时,不要复制它指向的值,而是复制引用(指针)。
您可以在MSDN中详细了解:http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx和http://msdn.microsoft.com/en-us/library/490f96s2.aspx
答案 4 :(得分:0)