C#中StringBuilder和String的区别

1,String类有不可改变性。每次执行字符操作时,都会创建一个新的String对象。

2,StringBuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题。初始化一个StringBuilder 之后,它会自动申请一个默认的StringBuilder 容量(默认值是16),这个容量是由Capacity来控制的.并且允许,我们根据需要来控制Capacity的大小,也可以通过Length来获取或设置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();

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 );

}

 

 

 

 

         来源于:www.hackbadboy.com  BadBoy技术网 BadBoy网络安全小组

posted @ 2011-12-03 10:06  MXi4oyu  阅读(145)  评论(0编辑  收藏  举报