廢話少說直接來說:比如在串口數據操作中,我們只想顯示串口接收的字符串,好吧你用string[]吧,有多少個字符串(順便說下二進制在C#中是以字符串形式出現的)就要分配多少個儲存空間,自己試下,要你你干嗎?好多這些字符我們何不把它們連起來放到一個空間里一並輸出呢----stringBuilder
剛好兩個都在查找,發現有個作者上傳了一個這樣的程序(估計原程序作者也沒運行就直接傳上去了,我直接粘貼運行的時候好幾處錯誤,自己就修改了一下),上程序
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的話自己去領悟吧
