文章出處
文章列表
引用類型總是那么神秘,原因就是因為它存儲的是內存地址,對于一個引用類型的變量來說,你在進行賦值操作時,實現上是以地址的形式傳遞的,當你在代碼段中對一個引用類型操作時,他會反應到原對象上,以下我說幾個引用類型常見的用法:
情況一:定義集合變量后,修改它的內容元素,會影響原對象嗎?
答:對的,會反映到元集合上
代碼:
List<Yinyong> yiyi = new List<Yinyong> { new Yinyong { ID = 1, Name = "zzl" }, new Yinyong { ID = 2, Name = "bobo" } }; yiyi[0].Name = "修改zzl"; //其它業務 Console.WriteLine(yiyi[0].Name); //結果:修改zzl
情況二:定義集合變量后,將它的部分元素添加到另一個集合中,在另一個集合中修改它的元素,是否會反映到原集合?
答:會的,會反映到元集合上
代碼:
List<Yinyong> yiyi = new List<Yinyong> { new Yinyong { ID = 1, Name = "zzl" }, new Yinyong { ID = 2, Name = "bobo" } }; List<Yinyong> temp = new List<Yinyong>(); temp.AddRange(yiyi.Where(i => i.ID == 1)); foreach (var item in temp) { item.Name = "修改name"; } //結果:修改name
情況三:定義集合變量后,將它以參數的形式傳給其它方法,在其它方法中修改這個對象,是否會反映到原方法的原集合上?
答:會的,會反映到元集合上
代碼:
static void Main(string[] args) { List<Yinyong> yiyi = new List<Yinyong> { new Yinyong { ID = 1, Name = "zzl" }, new Yinyong { ID = 2, Name = "bobo" } }; ModifySet(yiyi); } /// <summary> /// 修改yiyi這個對象,而這個對象是在主方法里定義的 /// </summary> /// <param name="yiyi"></param> static void ModifySet(List<Yinyong> yiyi) { yiyi[0].Name = "修改第一個元素的name屬性"; }
好了,掌握了上面三點之后,我們在寫代碼時會更加得心應手,我們只有掌握好基礎知識,才能設計出更好的程序!
文章列表
全站熱搜