陷阱 關於引用型別,請不要模稜兩可!

2021-09-06 12:12:22 字數 1048 閱讀 7406

引用型別總是那麼神秘,原因就是因為它儲存的是記憶體位址,對於乙個引用型別的變數來說,你在進行賦值操作時,實現上是以位址的形式傳遞的,當你在**段中對乙個引用型別操作時,他會反應到原物件上,以下我說幾個引用型別常見的用法:

情況一:定義集合變數後,修改它的內容元素,會影響原物件嗎?

答:對的,會反映到元集合上

**:

listyiyi = new list, new yinyong  };

yiyi[

0].name = "

修改zzl";

//其它業務

console.writeline(yiyi[0

].name);

//結果:修改zzl

情況二:定義集合變數後,將它的部分元素新增到另乙個集合中,在另乙個集合中修改它的元素,是否會反映到原集合?

答:會的,會反映到元集合上

**:

listyiyi = new list, new yinyong  };

list

temp = new list();

temp.addrange(yiyi.where(i => i.id == 1

));

foreach (var item in

temp)

//結果:修改name

情況三:定義集合變數後,將它以引數的形式傳給其它方法,在其它方法中修改這個物件,是否會反映到原方法的原集合上?

答:會的,會反映到元集合上

**:

static

void main(string

args)

, new yinyong };

modifyset(yiyi);

}//////

修改yiyi這個物件,而這個物件是在主方法裡定義的

/// ///

static

void modifyset(listyiyi)

好了,掌握了上面三點之後,我們在寫**時會更加得心應手,我們只有掌握好基礎知識,才能設計出更好的程式!

關於引用型別

c 中函式行參定義可以使用資料型別 名來進行定義。譬如 date date date arg 這裡的date arg指的是乙個date型別的資料,相對於於乙個date變數的別名,需要注意的是,這裡的 arg不是指標變數 不是arg的位址 倘如有呼叫函式即為 new date testdemo 其中d...

關於返回型別為引用

在c 中,函式經常返回型別為引用。這裡呢,我主要說的一點是,當返回型別為引用時,我們可以用引用來接受,也可以用普通變數來接受。include pch.h include using namespace std int a 19 int lyy int main 結果如下 1919 f c about...

關於C 值型別,引用型別,值傳遞,引用傳遞

說到引數傳遞,必須得弄清值型別和引用型別 為了容易表達,我暫且命名存放在堆中的內容為堆中物件,存放在棧上的內容為棧中物件。值型別存放在棧中,直接訪問。如果有 int a 0 int b a 就產生了兩個棧中物件。引用型別需要在堆中顯式分配,且不能直接訪問,需要在棧中分配乙個棧中物件 c 叫指標,c ...