值類型直接在堆棧(stack)中存儲該類型的值,此類型在內在的使用上以及訪問的效能上比引用類型要好。
引用類型變更存放的指向實際對象的指針,因此訪問對像時必須多進行一次內存引用的操作方可獲取數據。引用類型的對象必須分配多餘的內存來存放虛函數指針及各程同步塊,對於內存的需求較大。
以數組為例:
數組是引用類型的變量,所以值會變更。當數組作為參數傳遞時,其值也會隨著變更。因為引用類型傳遞的時地址。
注:string也是引用類型,代比較特殊,其值初始化就不會自動變更。
如下面代碼:
using System;
class mathod
{
static void PrintArr( int[] arrList)
{
for(int i=0;i<arr.Length;i++)
{
arrList[i]=i;
}
}
static void Main()
{
int[] arr={100,200,300};
PrintArr(arr);
foreach(int i in arr)
{
Console.Write(i+",");
}
Console.ReadLine();
}
}
class mathod
{
static void PrintArr( int[] arrList)
{
for(int i=0;i<arr.Length;i++)
{
arrList[i]=i;
}
}
static void Main()
{
int[] arr={100,200,300};
PrintArr(arr);
foreach(int i in arr)
{
Console.Write(i+",");
}
Console.ReadLine();
}
}
結果為0,1,2,而不是100,200,300