String 類有不可變性,每次執行操做時都會建立一個新的String對像,須要對該對象分配新的空間。函數
StringBuilder 解決了對字符串重複修改過程當中建立大量對象的問題。初始化一個StringBuilder後,它會自動申請一個默認的StringBuilder容量(16)ui
這個容量是由Capacity來控制的.而且容許,咱們根據須要來控制Capacity的大小,也能夠經過Length來獲取或設置StringBuilder 的長度.this
舉例: 用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 + "'";ci
String query = begin_query + GetWhereClause("PASSED") + end_query;字符串
用StringBuilder類這麼寫:string
StringBuilder begin_query = new StringBuilder();it
begin_query.Append("select UPPER(MachineName) As MachineName ");select
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();
StringBuilder 類的一些屬性與方法
--------------------------------------------------------------------------------
Length 屬性並非只讀的。
StringBuilder sb=new StringBuilder("I live the language");
Console.WriteLine(sb.ToString( ));
sb.Length = 6;
//Displays "I live"
Console.WriteLine(sb.ToString( ));
Capacity 屬性
描述:當前爲實例分配的字符數量。默認容量是16,若是將一個字符串做爲參數提供給構造函數,容量以最接近 2 的冪的值。
MaxCapacity 屬性
描述:這個實例中能夠被分配的字符最大數量。
Append( ) 方法
描述:追加給定值的字符串表示。
StringBuilder sb=new StringBuilder( );
Console.WriteLine( sb.Capacity+"/t"+sb.Length );
sb.Append ( 'a' , 17 )
Console.WriteLine( sb.Capacity+"/t"+sb.Length );
16 0 <== 輸出
32 17
EnsureCapacity( Int capacity ) 方法
描述:若是當前容量小於指定容量,內存分配會增長內存空間以達到指定容量。
Replace( Char oldchar,Char newchar ) 方法
描述:用newchar替換oldchar。
Replace( String oldstring,String newstring ) 方法
描述:用newstring替換oldstring。
Replace( Char oldchar,Char newchar,Int startpos,Int count ) 方法
描述:從startpos到count-1之間用newchar替換oldchar。
Replace( String oldstring,String newstring,Int startpos,Int count ) 方法
描述:從startpos到count-1之間用newstring替換oldstring。
ToString( ) 方法
StringBuilder sb=new StringBuilder( "I live this game" );
String s1=sb.ToString( ); //Displays "I live this game"
String s2=sb.ToString(3,4); //Displays "live"
在這裏第二個ToString( )方法調用了String類的Substring( )方法
public String ToString( int startIndex,int length )
{
return m_StringValue.Substring( startIndex,length );
}