值型別:直接存放於棧中,取的時候是直接取得值。值型別繼承自system.
valuetype。(自定義物件)
引用型別:存在於託管堆中,取的時候是從棧取該物件的位址,然後用這個位址去託管堆中取值。引用型別繼承自system.object。(int,bool,struct)
在賦值的時候,值型別是複製乙份,新的和舊的在以後的操作中互不影響,而引用型別複製的只是位址,在以後的修改中,修改新的舊的也會受到影響。
**示例:
staticvoid main(string
args)
);listperson.add(
new person());
list
listperson2 = listperson.where(m => m.name == "劉備"
).tolist();
listperson2[
0].name = "曹操"
;
foreach(person p in
listperson)
list
listint = new list();
listint.add(1);
listint.add(2);
list
listint2 = listint.where(m => m > 1
).tolist();
listint2[
0] = 5
;
foreach (int i in
listint)
console.readkey();
}
示例2:
staticvoid main(string
args)
;getp(p);
console.writeline(p.name);
//輸出 琴琴
console.readkey();
}public
static
void
getp(person p)
public
static
void geti(int
i)
引用型別由於呼叫引數時傳遞的是位址,所以對這個位址的修改會影響到原有物件。如果希望值型別與引用型別一樣也有影響,那麼就只有用ref傳參了。俗稱,引用傳遞。
值型別與引用型別(上
本文將介紹以下內容 1.引言 買了新本本,忙了好幾天系統,終於開始了對值型別和引用型別做個全面的講述了,本系列開篇之時就是因為想寫這個主題,才有了寫個系列的想法。所以對值型別和引用型別的分析,是我最想成文的一篇,其原因是過去的學習過程中我就是從這個主題開始,喜歡以il語言來分析執行,也喜好從底層的過...
值型別與引用型別(上
本文將介紹以下內容 1.引言 買了新本本,忙了好幾天系統,終於開始了對值型別和引用型別做個全面的講述了,本系列開篇之時就是因為想寫這個主題,才有了寫個系列的想法。所以對值型別和引用型別的分析,是我最想成文的一篇,其原因是過去的學習過程中我就是從這個主題開始,喜歡以il語言來分析執行,也喜好從底層的過...
值型別與引用型別區別
凡是直接繼承自system.valuetype的都是值型別,其他就是引用型別 區別就是乙個是傳值,乙個是傳引用 c 中值型別與引用型別的值傳遞與引用傳遞 值型別 結構體,數值型別 int,double,char,bool型,列舉,可空型別 nullable 引用型別 陣列,使用者定義的類 介面 委託...