文章出處

引用類型總是那么神秘,原因就是因為它存儲的是內存地址,對于一個引用類型的變量來說,你在進行賦值操作時,實現上是以地址的形式傳遞的,當你在代碼段中對一個引用類型操作時,他會反應到原對象上,以下我說幾個引用類型常見的用法:

情況一:定義集合變量后,修改它的內容元素,會影響原對象嗎?

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

代碼:

            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屬性";
        }

 

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


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()