用 StringBuilder 类替代 String
来源:互联网 发布:怎么链接淘宝店铺宝贝 编辑:程序博客网 时间:2024/05/16 15:50
.NET中我们经常要用到文本对象,一般的操作是定义一个string mystr,然后用mystr+="aaaa"之类的运算来累加.其实还有一个效率高得多的方法:使用 System.Text.StringBuilder 类,该类提供了更高的性能.
举例:我们通常会这么写:
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();
其实这个例子中性能的提高有限,毕竟串长度很短,阿猫写的一个程序需要动态生成大约500K的报表页面,用STRING需要40-60秒,用StringBuilder只需<10秒,效率提高太多了.
using System.Text;
String类的不可改变性使它更像一个值类型而不是一个引用类型。其副作用是每次执行字符操作时,都会创建一个新的String对象。StringBuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题。
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_String.Substring( startIndex,length );
}
- 用 StringBuilder 类替代 String
- 用 StringBuilder 类替代 String
- string类 stringBuffer stringBuilder
- String StringBuffer StringBuilder类
- String和StringBuilder-使用 StringBuilder 类(MSDN)
- String类和StringBuilder类
- 07.【String类】【StringBuffer】【StringBuilder】
- 解析String类和StringBuilder
- String、StringBuffer和StringBuilder类
- String、StringBuffer和StringBuilder类
- StringBuffer & StringBuilder & String,常用类
- 关于String StringBuilder StringBuffer 类
- [Java String] StringBuilder类解读
- String、StringBuffer和StringBuilder类
- String StringBuilder
- String(StringBuilder)
- 用“ ”替代string中所有的空格
- StringBuilder替代字符串的连接"+"
- 追女孩的经济学
- My View Concerning the Experiment
- RadAsm模板修改
- windows到linux的mysql乱码问题解决方法
- 找回显示桌面图标
- 用 StringBuilder 类替代 String
- javascrpt之 处理键盘事件的例子
- About Ancient Greece About Its spirit
- oracle 9I dba 1
- 火箭的路还很远
- javascript 之 select下拉框
- 中小企业如何选择好信息化手段
- c#中new和override的区别
- VC++6.0中操作Excel2003