StringBuilder和Append的一個程式及一個基礎概念

來源:互聯網
上載者:User

標籤:

剛好兩個都在尋找,發現有個作者上傳了一個這樣的程式(估計原程式作者也沒運行就直接傳上去了,我直接粘貼啟動並執行時候好幾處錯誤,自己就修改了一下),上程式

class Preson    {                         public string firstName;            public  string middleName;            public  string lastName;        //定義3個私人變數 firstName middleName lastName            /*public  Preson(string fn,string mn,string ln)  //建構函式            {            firstName=fn;            middleName=mn;            lastName=ln;            }*/            public void displayFullName()         //定義一個方法名            {            StringBuilder FullName =new StringBuilder();                  //執行個體化FullName            FullName.Append(firstName);      //FullName =FullName+firstName Full為空白 所有只顯示FirstName            FullName.Append(" ");              //FullName =FullName +"空格" FullName 已經包含firstName的值            if(middleName[0] != null )        //如果中間名的第一數組裡字元非空則向下運行 否則跳出此IF語句                 {                FullName.Append(".");        //滿足條件則繼續FullName = FullName +"."                FullName.Append(lastName);     //FullName= FullName + lastName的值                Console.WriteLine(FullName);    //輸出FullName                Console.ReadKey();                }            }    }

建構函式是對類的一個補充,記住是類,可以參考我另外一個類和結構的區別。當然可有可無,有的話方便些,具體看情況啦

上主程式

 static void Main(string[] args)        {            //Preson me = new Preson("Bradley", "Lee", "Jones");     //執行個體化            Preson me = new Preson();            me.firstName = "liu";            me.middleName = "lin";            me.lastName = "ru";                        me.displayFullName(); //調用該函數                    }

程式可能有點問題顯示不全名字,我也懶得調了,感興趣的自己調試一下,這個程式其實最大的意義就是建構函式的應用了,呵呵

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

以下是對StringBuilder的解釋 來自於百度解釋的很清楚後面會給出連結的

Stringbuilder類是直接用於字串操作的類,打個比方把
(1)string aa="123456";
(2)aa+="789";

(3)StringBuilder text=new StringBuilder("123456",12);
(4)text.Append("789");
如果你輸出aa,和text 你會發現他們的輸出內容是一樣的。
但是aa的操作過程實際上是:首先在記憶體中分配一個地址空間,空間大小是6。
然後執行  aa+="789";的操作,該過程是連接字串,“123456”和“789”並且在記憶體中重新分配地址。把aa 的記憶體位址指向 “123456789”的記憶體位址。

也就是說在記憶體中實際上是有兩個空間北分配,第一的記憶體空間,在後來是由C#的垃圾處理機制來自動處理掉,

如果我們用3 4 句的程式來實現這個過程,那麼他是沒有再次分配記憶體空間的,
他就是在text的記憶體空間裡進行了操作。這裡要說明下StringBuilder在生命變數的過程中是可以我們自己來分配他的大小的,如果實際的內容超出記憶體空間,
他會自動翻倍。

通過上面的例子,我們可以知道 StringBuilder的優越性是在:
第一:他不需要每次都去分配記憶體空間。所以系統就沒有必要去處理垃圾;
第二:當我們需要多次的對一個字串進行多次操作的時候,他的效率要遠遠  高  與string

http://zhidao.baidu.com/link?url=lMw8QIvJx-7_G-swkgYC4-HgFyDFY9jGjpw2Ft1IAOptJV_jQt6zpsW_RaVTpU4z0p_zf8-p1N8p7ayeuHlNba(作者解釋的很清楚,以至於我懷疑微軟是不是這個意思,後來感覺自己多慮了)

Append的話自己去領悟吧

 

StringBuilder和Append的一個程式及一個基礎概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.