<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      常見的.net誤解 1-1 字符串是不可修改的(immutable)

      總是很在很多資料或者文章上介紹.net的字符串是不可以修改的?(?immutable)

       

       

      先來看看什么是字符串

        在.net里面字符串是一個(gè)引用類型,但是有很多值類型的特征

        例如比較兩個(gè)字符串,實(shí)際上比較的是兩個(gè)的內(nèi)容,而不是引用地址 ,(這里涉及到一個(gè)概念就是字符串駐留技術(shù))

       

      然后我們看看為什么經(jīng)常有人說字符串是不可以修改的

        因?yàn)樽址幸韵绿匦?

      1. 當(dāng)你對(duì)字符串執(zhí)行 + ,  Substring 等操作的時(shí)候,會(huì)返回一個(gè)新的字符串,
      2. 一般情況下你找不到可以修改字符串的方法,(直接給他賦值不過是修改一個(gè)地址,原來的值并沒有變)
      3. 最主要的 c#中的字符串表現(xiàn)出太多值類型的特征

       

      如何修改字符串

      參考以下代碼:

        定義一個(gè)指向字符串的指針,根據(jù)地址直接修改值

       

      unsafe
      {
      string s1 = "1 test string";
      fixed (char* p = s1)
      {
      *p = '2';
      }
      Console.WriteLine(s1);
      }

       

      關(guān)于字符串駐留

        一個(gè)字符串一般來說在內(nèi)存中只有一個(gè)實(shí)例, 也就是一個(gè)字符串是可以同時(shí)用在多個(gè)地方的

        那么修改了一個(gè)字符串的內(nèi)容,其他的字符串也會(huì)同時(shí)受到影響,參考以下代碼: 修改s1的同時(shí) s2也被修改了

       

       

      unsafe
      {
      string s1 = "1 test string";
      string s2 = "1 test string";
      fixed (char* p = s1)
      {
      *p = '2';
      }
      Console.WriteLine(s1);
      Console.WriteLine(s2);
      }

       

       

       

       

      PS1:字符串駐留是一種很有意思的技術(shù),在以后的章節(jié)我們可以詳細(xì)討論這一點(diǎn)
      PS2:直接修改字符串是一個(gè)非常危險(xiǎn)的行為, 1.他會(huì)影響到整個(gè)應(yīng)用程序中用到這個(gè)字符串的地方,2.不小心會(huì)覆蓋到字符串外的其他地方(字符串在內(nèi)存中的表現(xiàn)形式 之后介紹)

      PS3:字符串在內(nèi)存中的分布形式

        .net字符串在內(nèi)存中由3個(gè)部分組成

          1. 4B 一個(gè)int的值代表這個(gè)字符串有多長(zhǎng) (低位在前)

            a) 在比較字符串的時(shí)候,內(nèi)部?jī)?yōu)化的結(jié)果就是先比較這個(gè)長(zhǎng)度, 如果不一樣,則立刻返回false  ,否則繼續(xù)檢查內(nèi)容

            b)這是一個(gè)int值 暗示著在32位系統(tǒng)上 字符串的最大長(zhǎng)度就是int的最大值,大約2g

            c)如果你要修改的字符串長(zhǎng)度改變了原來的長(zhǎng)度,例如 "a" -> "a1" ,請(qǐng)記得修改這個(gè)值....否則你會(huì)發(fā)現(xiàn)修改后的字符串?dāng)嗟袅?/p>

          2. 字符串本身的內(nèi)容(Unicode-16編碼)

          3. 4B 字符串結(jié)束符(\0) (對(duì)于這個(gè)問題其實(shí)我也有一些疑問, 其實(shí)這個(gè)在.net中并不重要,其實(shí)沒有他也一樣ok)

       

        

       

      未完待續(xù)(剛剛開始用博客園....居然發(fā)現(xiàn)C#分類是灰色的  選不了...不知道怎么回事)

      posted on 2010-11-12 17:29  聽說讀寫  閱讀(1621)  評(píng)論(7)    收藏  舉報(bào)

      導(dǎo)航

      主站蜘蛛池模板: 午夜福利看片在线观看| 久久国产av影片| 亚洲人成人伊人成综合网无码| 蜜芽久久人人超碰爱香蕉| 国产亚洲精品久久久久婷婷瑜伽| 日韩中文字幕免费在线观看| 欧美性猛交xxxx乱大交丰满| 干老熟女干老穴干老女人| 在线一区二区中文字幕| 亚洲免费视频一区二区三区| 免费人成网站免费看视频| 久久国产乱子精品免费女| 国产中文字幕精品在线| 国产成人精彩在线视频| 国产精品毛片在线完整版| 久久久久久毛片免费播放| 国产精品中文第一字幕| 性色在线视频精品| 亚洲国产中文字幕精品| 一区二区丝袜美腿视频| 99riav精品免费视频观看| 亚洲av天堂天天天堂色| 九九热视频在线免费观看| 国产精品亚洲二区在线播放| aaa少妇高潮大片免费看| 久久精品国产一区二区三| 久章草这里只有精品| 亚洲 日本 欧洲 欧美 视频| 扒开女人内裤猛进猛出免费视频| 亚洲日本中文字幕乱码中文| 色偷偷www.8888在线观看| 狠狠色丁香婷婷综合| 女人腿张开让男人桶爽| 国产成人精品1024免费下载| 久久99精品国产99久久6尤物| 国产精品中出一区二区三区| 国产精品毛片av999999| 国产成人一区二区三区视频免费| 国产无遮挡性视频免费看| 午夜精品视频在线看| 国产精品久久久久不卡绿巨人 |