• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Welcome to ErranLi's Blog!

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(12)

            搜索

            •  

            積分與排名

            • 積分 - 177258
            • 排名 - 151

            最新評論

            閱讀排行榜

             傳值 值類型存放在棧中,直接訪問。如果有:int a=0;int b=a;就產(chǎn)生了兩個棧中對象。
            引用類型需要在堆中顯式分配,且不能直接訪問,需要在棧中分配一個棧中對象(C++叫指針,C#叫引用)指向其堆中對象。
            如果:
            StringBuilder strb = new StringBuilder();
            StringBuilder strb2 = strb;
            則在堆中只有一個堆中對象,只是棧中有兩個棧中對象指向堆中對象。
            可以看出:每個變量都是一個棧中對象。不管是值類型還是引用類型,只是值類型的棧中對象就是其內(nèi)容,而引用類型的棧中對象只是一個指向堆中對象的地址。
            參數(shù)傳遞分值傳遞和引用傳遞兩種。
            通常,在沒有顯式指出ref和out時都是值傳遞。

            值傳遞:傳的是對象的值拷貝。(即函數(shù)內(nèi)參數(shù)對象是調(diào)用時傳遞的對象的棧中對象的拷貝。)
            引用傳遞:傳的是棧中對象的地址。(即函數(shù)內(nèi)參數(shù)對象與調(diào)用時傳遞的對象完全是同一棧中對象。)
            現(xiàn)在用例子來說明傳值跟傳地址的不同:


            private void button2_Click(object sender, System.EventArgs e)
            ...{
              StringBuilder strb1 = new StringBuilder();
              StringBuilder strb2 = new StringBuilder();
              Test1(strb1);
              Test2(ref strb2);
              string str1 = strb1.ToString(); //str1值:"A"
              string str2 = strb2.ToString(); //str2值:"BC"
            }

            void Test1(StringBuilder strb)
            ...{
              //strb和strb1是兩個棧中對象,但指向相同的地址,這個操作是改變堆中對象
              strb.Append("A");

              //這里將strb指向一個新的堆中對象,所以后面的操作與strb1指向的棧中對象無關(guān)
              strb = new StringBuilder("B");
              strb.Append("C");
            }

            void Test2(ref StringBuilder strb)
            ...{
              //這里的strb和strb2是同一個棧中對象,所以改變strb的值使其指向另一個對象也等于改變strb2
              strb = new StringBuilder("B");
              strb.Append("C");
            }

            posted on 2010-10-09 17:10 erran 閱讀(714) 評論(0)  編輯 收藏 引用 所屬分類: dotNet
            婷婷久久综合九色综合绿巨人 | 久久国产视屏| 亚洲精品tv久久久久| 久久亚洲春色中文字幕久久久| 一本伊大人香蕉久久网手机| 久久久久亚洲国产| 97r久久精品国产99国产精| 久久综合成人网| 久久久亚洲欧洲日产国码二区| 日日狠狠久久偷偷色综合免费| 久久夜色精品国产噜噜亚洲AV| 国产免费久久久久久无码| 亚洲AV日韩精品久久久久久久| 久久99精品免费一区二区| 久久AV高清无码| 伊人久久综合精品无码AV专区| 久久精品一区二区影院| 国产精品久久久久久一区二区三区| 热99RE久久精品这里都是精品免费 | 99久久99久久| 久久成人国产精品免费软件| 久久精品国产亚洲av瑜伽| 99久久久精品免费观看国产| 久久亚洲私人国产精品vA| 精产国品久久一二三产区区别| 久久久久久久综合日本| 国产福利电影一区二区三区久久老子无码午夜伦不 | 无码AV中文字幕久久专区| 国产精品美女久久福利网站| 久久久青草青青国产亚洲免观| 四虎国产永久免费久久| 2022年国产精品久久久久| 久久大香香蕉国产| 欧美牲交A欧牲交aⅴ久久| 亚洲乱码精品久久久久..| 色偷偷88888欧美精品久久久| 亚洲精品乱码久久久久久中文字幕| 久久99精品国产麻豆宅宅| 中文无码久久精品| 久久精品亚洲精品国产色婷| 蜜臀av性久久久久蜜臀aⅴ麻豆|