【经典】如何高效地使用string
2009-12-27 11:49
302 查看
虽然是比较旧的文章了,但还是很有实际作用,在此贴出,以供参考,呵呵~
下面简单介绍一些高效地使用string的一些小的建议:
1. 尽量使用字符串(literal string)相加来代替字符串变量和字符创相加,因为这样可以使用现有的string操作指令进行操作和利用字符串驻留。
比如:
string s = "abc" + "def";
优于
string s = "abc";
s = s + "def";
2. 在需要的时候使用StringBuilder对string作频繁的操作:
由于string的恒定性,在我们对一个string进行某些操作的时候,比如调用ToUpper()或者ToLower()把某个string每个字符转化成大写或者小写;调用SubString()取子串;会创建一个新的string,有时候会创建一些新的临时string。这样的操作会增加内存的压力。所有在对string作频繁操作的情况下,我们会考虑使用StringBuilder来高效地操作string。StringBuilder之所以能对string操作带来更好的performance,是因为在它的内部维护一个字符数组,而不是一个string来避免string操作带来的新的string的创建。
StringBuilder是一个很好的字符累加器,我们应该充分地利用这一个功能:
StringBuilder sb = new StringBuilder();
sb.Append(str1 + str2);
最好写成
StringBuilder sb = new StringBuilder();
sb.Append(str1);
sb.Append(str2);
避免创建一个新的临时string来保存str1 + str2。
再比如下面的Code
StringBuilder sb = new StringBuilder();
sb.Append(WorkOnString1());
sb.Append(WorkOnString2());
sb.Append(WorkOnString3());
最好写好吧WorkOnString1,WorkOnString2,WorkOnString3定义成:
WorkOnString1(StringBuilder sb)
WorkOnString2(StringBuilder sb)
WorkOnString3(StringBuilder sb)
3. 高效地进行string的比较操作
我们知道,对象之间的比较有比较Value和比较Reference之说。一般地对Reference进行比较的速度最快。对于string,在字符串驻留的前提下,我们可以把对Value的比较用Reference的比较来代替从而会的Performance的提升。
此外,对于忽略大小写的比较,我们最好使用string的static方法Compare(string strA, string strB, bool ignoreCase)。也就是说:
if(str1.ToLower()==str2.ToLower())
最好写成
If(String. Compare(str1,str2,true) == 0)
(* 对于要忽略大小写的字符串对比,也可使用str1.Equals(str2, StringComparision.OrdinalIgnoreCase)这种写法。
引用:静态的String.Compare方法.这个方法有个优势就是它能处理空字符串引用,忽略字符串大小写.也可以在特定文化背景下使用。由于字符串引用可能是空的,所以在比较字符串时,应该避免使用"=="或者成员比较函数)
下面简单介绍一些高效地使用string的一些小的建议:
1. 尽量使用字符串(literal string)相加来代替字符串变量和字符创相加,因为这样可以使用现有的string操作指令进行操作和利用字符串驻留。
比如:
string s = "abc" + "def";
优于
string s = "abc";
s = s + "def";
2. 在需要的时候使用StringBuilder对string作频繁的操作:
由于string的恒定性,在我们对一个string进行某些操作的时候,比如调用ToUpper()或者ToLower()把某个string每个字符转化成大写或者小写;调用SubString()取子串;会创建一个新的string,有时候会创建一些新的临时string。这样的操作会增加内存的压力。所有在对string作频繁操作的情况下,我们会考虑使用StringBuilder来高效地操作string。StringBuilder之所以能对string操作带来更好的performance,是因为在它的内部维护一个字符数组,而不是一个string来避免string操作带来的新的string的创建。
StringBuilder是一个很好的字符累加器,我们应该充分地利用这一个功能:
StringBuilder sb = new StringBuilder();
sb.Append(str1 + str2);
最好写成
StringBuilder sb = new StringBuilder();
sb.Append(str1);
sb.Append(str2);
避免创建一个新的临时string来保存str1 + str2。
再比如下面的Code
StringBuilder sb = new StringBuilder();
sb.Append(WorkOnString1());
sb.Append(WorkOnString2());
sb.Append(WorkOnString3());
最好写好吧WorkOnString1,WorkOnString2,WorkOnString3定义成:
WorkOnString1(StringBuilder sb)
WorkOnString2(StringBuilder sb)
WorkOnString3(StringBuilder sb)
3. 高效地进行string的比较操作
我们知道,对象之间的比较有比较Value和比较Reference之说。一般地对Reference进行比较的速度最快。对于string,在字符串驻留的前提下,我们可以把对Value的比较用Reference的比较来代替从而会的Performance的提升。
此外,对于忽略大小写的比较,我们最好使用string的static方法Compare(string strA, string strB, bool ignoreCase)。也就是说:
if(str1.ToLower()==str2.ToLower())
最好写成
If(String. Compare(str1,str2,true) == 0)
(* 对于要忽略大小写的字符串对比,也可使用str1.Equals(str2, StringComparision.OrdinalIgnoreCase)这种写法。
引用:静态的String.Compare方法.这个方法有个优势就是它能处理空字符串引用,忽略字符串大小写.也可以在特定文化背景下使用。由于字符串引用可能是空的,所以在比较字符串时,应该避免使用"=="或者成员比较函数)
相关文章推荐
- 深入理解string和如何高效地使用string
- 如何改善Managed Code的Performance和Scalability系列之二:深入理解string和如何高效地使用string
- [原创]如何改善Managed Code的Performance和Scalability系列之二:深入理解string和如何高效地使用string
- 深入理解string和如何高效使用string
- 深入理解string和如何高效地使用string
- 深入理解string和如何高效地使用string
- 转载:深入理解string和如何高效地使用string
- Java高效运行必备:如何选择使用String、StringBuffer与StringBuilder
- 9.1.1 Java高效运行必备:如何选择使用String、StringBuffer与StringBuilder
- 一起谈.NET技术,深入理解string和如何高效地使用string
- .net 如何高效地使用string
- TAdvstringGrid控件如何使用
- 如何使用ISE高效开发Verilog项目(新手)
- 在C#中如何使用BYTE[]转换为String
- vim/vi 如何高效使用(键盘图打印版)
- 如何高效使用C语言
- 转 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现
- 如何使用搜索技巧来成为一名高效的程序员
- 如何使用Groovy高效编程对生成较为复杂的XML文件?
- 如何高效的使用c++