欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中StringBuilder用法以及和String的區(qū)別分析

 更新時間:2013年03月17日 12:02:06   作者:  
當我們在初學使用C#時,常常會不知道該用StringBuilder合適還是用String高效,下面是我在學習當中對StringBuilder和String的區(qū)別總結(jié),分享給大家。

String類有不可改變性。每次執(zhí)行字符操作時,都會創(chuàng)建一個新的String對象。

StringBuilder 類解決了對字符串進行重復修改的過程中創(chuàng)建大量對象的問題。初始化一個StringBuilder 之后,它會自動申請一個默認的StringBuilder 容量(默認值是16),這個容量是由Capacity來控制的.并且允許,我們根據(jù)需要來控制Capacity的大小,也可以通過Length來獲取或設(shè)置StringBuilder 的長度.

舉例: 用String類這么寫

復制代碼 代碼如下:

String begin_query = "select UPPER(MachineName) As MachineName, "+"LOWER(MachineOwner) As MachineOwner, Status, "+ "StartTime from NET_STRESS WHERE ";

String end_query = " AND StartTime > '" + startTime + "'AND StartTime < '" + endTime + "'";

String query = begin_query + GetWhereClause("PASSED") + end_query;

用StringBuilder類這么寫:

復制代碼 代碼如下:

StringBuilder begin_query = new StringBuilder();

 begin_query.Append("select UPPER(MachineName) As MachineName ");

 begin_query.Append("LOWER(MachineOwner) As MachineOwner, Status, ");

 begin_query.Append("StartTime from NET_STRESS WHERE ");

 StringBuilder end_query = new StringBuilder();

 end_query.Append(" AND StartTime > '");

 end_query.Append(startTime);

 end_query.Append("' AND StartTime < '");

 end_query.Append(endTime);

 end_query.Append("'");

 String query = begin_query.Append(GetWhereClause("PASSED")).Append(end_query).ToString();

通過用一個重載的構(gòu)造函數(shù)方法初始化變量,可以創(chuàng)建   StringBuilder   類的新實例,正如以下示例中所闡釋的那樣。

復制代碼 代碼如下:

StringBuilder   MyStringBuilder   =   new   StringBuilder("Hello   World!");

設(shè)置容量和長度  
雖然    StringBuilder    對象是動態(tài)對象,允許擴充它所封裝的字符串中字符的數(shù)量,但是您可以為它可容納的最大字符數(shù)指定一個值。此值稱為該對象的容量,不應(yīng)將它與當前    StringBuilder   對象容納的字符串長度混淆在一起。例如,可以創(chuàng)建   StringBuilder    類的帶有字符串“Hello”(長度為   5)的一個新實例,同時可以指定該對象的最大容量為   25。當修改   StringBuilder    時,在達到容量之前,它不會為其自己重新分配空間。當達到容量時,將自動分配新的空間且容量翻倍??梢允褂弥剌d的構(gòu)造函數(shù)之一來指定    StringBuilder   類的容量。以下代碼示例指定可以將   MyStringBuilder   對象擴充到最大   25   個空白。  

復制代碼 代碼如下:

StringBuilder   MyStringBuilder   =   new   StringBuilder("Hello   World!",   25);

另外,可以使用讀/寫    Capacity   屬性來設(shè)置對象的最大長度。以下代碼示例使用   Capacity   屬性來定義對象的最大長度。
復制代碼 代碼如下:

MyStringBuilder.Capacity   =   25;

EnsureCapacity   方法可用來檢查當前   StringBuilder    的容量。如果容量大于傳遞的值,則不進行任何更改;但是,如果容量小于傳遞的值,則會更改當前的容量以使其與傳遞的值匹配。  

也可以查看或設(shè)置   Length   屬性。如果將   Length   屬性設(shè)置為大于   Capacity   屬性的值,則自動將    Capacity   屬性更改為與   Length   屬性相同的值。如果將   Length   屬性設(shè)置為小于當前    StringBuilder   對象內(nèi)的字符串長度的值,則會縮短該字符串。  

修改   StringBuilder    字符串  
下表列出了可以用來修改   StringBuilder   的內(nèi)容的方法。  

方法名    使用    
StringBuilder.Append   將信息追加到當前   StringBuilder   的結(jié)尾。     
StringBuilder.AppendFormat   用帶格式文本替換字符串中傳遞的格式說明符。    
StringBuilder.Insert   將字符串或?qū)ο蟛迦氲疆斍?nbsp;  StringBuilder   對象的指定索引處。    
StringBuilder.Remove   從當前   StringBuilder   對象中移除指定數(shù)量的字符。    
StringBuilder.Replace   替換指定索引處的指定字符。    

Append  
Append   方法可用來將文本或?qū)ο蟮淖址硎拘问教砑拥接僧斍?nbsp;  StringBuilder    對象表示的字符串的結(jié)尾處。以下示例將一個   StringBuilder   對象初始化為“Hello    World”,然后將一些文本追加到該對象的結(jié)尾處。將根據(jù)需要自動分配空間。 

復制代碼 代碼如下:

StringBuilder   MyStringBuilder   =   new   StringBuilder("Hello   World!");  
MyStringBuilder.Append("   What   a   beautiful   day.");  
Console.WriteLine(MyStringBuilder);

此示例將    Hello   World!   What   a   beautiful   day.   顯示到控制臺。  

AppendFormat  
AppendFormat   方法將文本添加到   StringBuilder    的結(jié)尾處,而且實現(xiàn)了   IFormattable    接口,因此可接受格式化部分中描述的標準格式字符串??梢允褂么朔椒▉碜远x變量的格式并將這些值追加到   StringBuilder    的后面。以下示例使用   AppendFormat   方法將一個設(shè)置為貨幣值格式的整數(shù)值放置到   StringBuilder   的結(jié)尾。  

復制代碼 代碼如下:

int   MyInt   =   25;   
StringBuilder   MyStringBuilder   =   new   StringBuilder("Your   total   is   "); 
MyStringBuilder.AppendFormat("{0:C}   ",   MyInt); 
Console.WriteLine(MyStringBuilder);

此示例將   Your   total    is   $25.00   顯示到控制臺。  

Insert  
Insert    方法將字符串或?qū)ο筇砑拥疆斍?nbsp;  StringBuilder   中的指定位置。以下示例使用此方法將一個單詞插入到    StringBuilder   的第六個位置。 

復制代碼 代碼如下:

StringBuilder   MyStringBuilder   =   new   StringBuilder("Hello   World!"); 
MyStringBuilder.Insert(6,"Beautiful   "); 
Console.WriteLine(MyStringBuilder);

此示例將   Hello    Beautiful   World!   顯示到控制臺。  

Remove  
可以使用    Remove   方法從當前   StringBuilder   中移除指定數(shù)量的字符,移除過程從指定的從零開始的索引處開始。以下示例使用    Remove   方法縮短   StringBuilder。 

復制代碼 代碼如下:

StringBuilder   MyStringBuilder   =   new   StringBuilder("Hello   World!"); 
MyStringBuilder.Remove(5,7); 
Console.WriteLine(MyStringBuilder);

此示例將   Hello    顯示到控制臺。  

Replace  
使用   Replace   方法,可以用另一個指定的字符來替換    StringBuilder   對象內(nèi)的字符。以下示例使用   Replace   方法來搜索   StringBuilder    對象,查找所有的感嘆號字符   (!),并用問號字符   (?)   來替換它們。

復制代碼 代碼如下:

StringBuilder   MyStringBuilder   =   new   StringBuilder("Hello   World!"); 
MyStringBuilder.Replace('!',   '?'); 
Console.WriteLine(MyStringBuilder); 

此示例將   Hello   World?   顯示到控制臺。

相關(guān)文章

最新評論