介紹

C# 中有兩種類型:ValueType(實值型別)ReferenceType(參考型別)ValueType的變數則會直接存取資料,而ReferenceType的變數會存取資料的參考。

從記憶體配置了解ValueType與ReferenceType

在記憶體配置中Stack、Heap的記憶體空間來比較出ValueType與ReferenceType的差異。

Stack Heap
ValueType 儲存"值"
ReferenceType 儲存"參考" 儲存new出來的實例(取Stack中的"參考"後對應到Heap中的記憶體位址)

ValueType與ReferenceType的比較

ValueType在處理參數傳遞的時候會複製一份相同的內容在Stack中。

ReferenceType在處理參數傳遞的時候是參考記憶體位置進行處理。

以下是內建的型別供參考 :

ValueType ValueType
bool System.Boolean uint System.UInt32
byte System.Byte nint System.IntPtr
sbyte System.SByte nuint System.UIntPtr
double System.Double ulong System.UInt64
char System.Char long System.Int64
decimal System.Decimal short System.Int16
float System.Single ushort System.UInt16
int System.Int32
ReferenceType
object System.Object
dynamic System.Object
string System.String

參考網站 : valueType referenceType