亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

關于C#函數對象參數傳遞的問題

2024-09-07 17:05:11
字體:
來源:轉載
供稿:網友

    我們知道在.net里class是引用類型,在函數參數表中的對象傳遞的都是對象的引用,所以在函數體內對其對象參數的修改會影響函數外對應的對象本身,例如下面的程序:


    class Program
    {
        static void Main(string[] args)
        {
            TestClass objA = new TestClass();
            objA.Name = "I am ObjA"; Console.WriteLine(String.Format("In Main:{0}", objA.Name));

            TestFun(objA);

            Console.WriteLine(String.Format("In Main:{0}", objA.Name));

            Console.Read();
        }

        static void TestFun(TestClass obj)
        {
            obj.Name = "I am be modified in TestFun";
            Console.WriteLine(String.Format("In TestFun:{0}", obj.Name));
        }

        public class TestClass
        {
            public string Name { get; set; }
        }
    }

  將對象objA作為參數傳遞給函數TestFun,這時傳遞的是對象objA的引用,所以在函數內對objA的修改會直接應用到這個對象本身。在函數TestFun內修改了形參obj的Name屬性,所以在Main中再調用objA.Name時這個屬性值就變為在TestFun中修改后的值了。這一點很好理解,運行結果也就是:


 


    如果我們換一種寫法:

class Program
    {
        static void Main(string[] args)
        {
            TestClass objA = new TestClass();
            objA.Name = "I am ObjA"; Console.WriteLine(String.Format("In Main:{0}", objA.Name));

            TestFun(objA);

            Console.WriteLine(String.Format("In Main:{0}", objA.Name));

            Console.Read();
        }

        static void TestFun(TestClass obj)
        {
            TestClass objB = new TestClass();
            obj = objB;
            obj.Name = "I am ObjB";
            Console.WriteLine(String.Format("In TestFun:{0}", obj.Name));
        }

        public class TestClass
        {
            public string Name { get; set; }
        }
    }

    那結果又將如何呢? 在TestFun中新創建了一個對象objB,接著將obj指向新創建的對象objB并對其的Name屬性賦值,所以在TestFun函數體里Console.WriteLine的時候obj.Name應該是“I am ObjB”。那在Main里調用了TestFun(objA)后objA指向的對象到底做了改變沒有,它仍舊指向原來的對象還是已經指向了在TestFun里創建的objB呢?


    我的猜測是這樣的,將objA傳遞給TestFun傳遞的實際是objA的地址,在調用TestFun之前的對應關系是:



   objA是個變量,他本身的地址是000001,它存放的是objA對象的地址00E001。當調用函數TestFun(objA)時,由于要將objA作為參數傳遞給TestFun,所以在
棧中就復制一個objA地址的副本,這個副本的地址為000003,他存放的仍舊是objA對象的地址00E001,如圖:


   所以在TestFun函數中,一開始obj指向的還是objA對象。當在TestFun中創建了一個對象objB后,內存模型變為:

 


  TestFun中執行“obj=objB”后,obj指向objB對象,如下圖:

 


  所以執行完TestFun函數后,Main函數中objA仍舊指向原來的objA對象,故運行結果如下:


注:本文中的內存模型僅是個人猜測,肯定有不正確或者不嚴謹的地方,希望不要誤導大家。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产色综合久久不卡98| 欧美日韩国产在线播放| 午夜精品久久久久久久男人的天堂| 成人激情在线播放| 欧美成人一区在线| 欧美最近摘花xxxx摘花| 久久精品国产一区二区电影| 国产精品视频免费在线观看| 久久精品国产精品亚洲| 欧美国产精品va在线观看| 日本欧美在线视频| 国产成人精品久久二区二区91| 午夜精品视频在线| 国产福利精品在线| 欧美国产乱视频| 亚洲综合中文字幕在线| 欧美午夜性色大片在线观看| 欧美日韩第一页| 538国产精品一区二区在线| 日韩av电影在线免费播放| 国产女人18毛片水18精品| 国内精品视频一区| 狠狠躁夜夜躁人人爽天天天天97| 欧美精品999| 日本精品久久电影| 国产精品成人国产乱一区| 亚洲精品456在线播放狼人| 国产精品入口夜色视频大尺度| 成人国产在线视频| www.日韩av.com| 亚洲欧美成人精品| 国产精品小说在线| 久久久久久久香蕉网| 成人在线播放av| 2019av中文字幕| 91精品国产高清久久久久久91| 亚州av一区二区| 成人有码视频在线播放| 国产免费成人av| 日韩精品极品在线观看| 最新亚洲国产精品| 久久男人的天堂| 欧美日韩国产成人高清视频| 77777亚洲午夜久久多人| 久久精品99久久香蕉国产色戒| 日韩av在线网页| 国产精品av在线播放| 97精品伊人久久久大香线蕉| 欧美在线视频一区| 欧美国产日韩精品| 国产精品爽黄69天堂a| 2018中文字幕一区二区三区| 91精品国产自产在线观看永久| 亚洲欧美综合区自拍另类| 午夜精品久久久久久99热软件| 日韩专区中文字幕| 久久久久久久国产精品视频| 91国产视频在线播放| 性欧美xxxx| 日本国产欧美一区二区三区| 久久久精品久久久| 亚洲国产精品成人精品| 一区二区中文字幕| 久久久久久久激情视频| 亚洲一区二区三区sesese| 欧美日韩成人在线播放| 揄拍成人国产精品视频| 久久青草精品视频免费观看| 国产成人鲁鲁免费视频a| 97成人在线视频| 欧美激情久久久久久| 亚洲最大激情中文字幕| 高清一区二区三区四区五区| 欧美精品xxx| 国产日产久久高清欧美一区| 91精品视频播放| 欧美精品亚州精品| 欧美高清视频在线| 中文字幕亚洲一区在线观看| 国产日韩欧美在线| 国产精品一区二区三区毛片淫片| 国产精品夫妻激情| 欧美日韩一区二区精品| 亚洲美女av电影| 欧美午夜丰满在线18影院| 欧美在线xxx| 日韩av在线免费播放| 日韩欧美999| 欧美日韩国产中文字幕| 亚洲国产第一页| 亚洲欧美日韩区| 日韩精品小视频| 中日韩美女免费视频网站在线观看| 亚洲欧美国产一本综合首页| 国产午夜精品视频免费不卡69堂| 日日狠狠久久偷偷四色综合免费| 91免费欧美精品| 欧美又大粗又爽又黄大片视频| 日韩欧美在线视频日韩欧美在线视频| 亚洲一区二区三区在线视频| 久久国产精品久久久久| 在线播放日韩av| 国产99在线|中文| 91精品一区二区| 亚洲天堂影视av| 欧美视频第一页| 亚洲一区二区久久久| 少妇高潮久久久久久潘金莲| 久久夜精品va视频免费观看| 欧美激情一区二区三区在线视频观看| 91精品国产网站| 91sao在线观看国产| 成人xxxxx| 色综合天天狠天天透天天伊人| 性视频1819p久久| 国产精品第一视频| 国产一区二区三区三区在线观看| 北条麻妃久久精品| 激情懂色av一区av二区av| 成人黄色av网| 国产视频精品在线| 北条麻妃在线一区二区| 久久成人亚洲精品| 日韩国产欧美精品一区二区三区| 久久五月天综合| 成人h片在线播放免费网站| 92国产精品久久久久首页| 97在线日本国产| 日韩国产在线看| 国产成人精品免费视频| 日本精品视频在线| 亚洲成人久久一区| 中文字幕在线视频日韩| 69精品小视频| 国产91色在线播放| 欧美国产日韩一区| 亚洲国产日韩欧美在线动漫| 国产精品热视频| 久久久中文字幕| 国产色视频一区| 国产一区红桃视频| 亚洲激情在线观看| 欧美午夜美女看片| y97精品国产97久久久久久| 精品高清一区二区三区| 日韩电影中文字幕| 91久久久久久久久久| 久久av在线看| 国产女人18毛片水18精品| 国内精品视频久久| 夜色77av精品影院| 亚洲精品欧美极品| 夜夜狂射影院欧美极品| 亚洲自拍小视频免费观看| 成人动漫网站在线观看| 九九视频这里只有精品| 久久久在线观看| 亚洲精品美女久久久| 亚洲sss综合天堂久久| 午夜精品久久久久久久99热| 国产ts人妖一区二区三区| 97精品一区二区视频在线观看| 51视频国产精品一区二区| 国产精品香蕉av|