引用型別與值型別在編碼上的區別

2021-09-06 15:29:24 字數 1208 閱讀 7830

值型別:直接存放於棧中,取的時候是直接取得值。值型別繼承自system.

valuetype。(自定義物件)

引用型別:存在於託管堆中,取的時候是從棧取該物件的位址,然後用這個位址去託管堆中取值。引用型別繼承自system.object。(int,bool,struct)

在賦值的時候,值型別是複製乙份,新的和舊的在以後的操作中互不影響,而引用型別複製的只是位址,在以後的修改中,修改新的舊的也會受到影響。

**示例:

static

void 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:

static

void 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 引用型別 陣列,使用者定義的類 介面 委託...