DJa*_*Jay 5 c# string stringbuilder heuristics
已经有很多关于字符串和字符串构建器之间差异的问题,大多数人都认为字符串构建器比字符串更快.我很想知道字符串构建器是否太好所以为什么字符串存在?此外,有些正文可以给我一个例子,其中字符串比字符串构建器更有用吗?
在通过大量循环或迭代构造和修改字符串时,StringBuilder是更好的选择.
简单的字符串操作(例如一些连接或简单地存储字符串值)更适合标准字符串对象.
类似的问题?String vs. StringBuilder
这不是哪种情况更有用......
AString
是 a String
- 一个或多个彼此相邻的字符。如果您想以某种方式更改字符串,它只会创建更多字符串,因为它们是不可变的。
AStringBuilder
是创建字符串的类。它提供了一种构造它们的方法,而无需在内存中创建大量冗余字符串。最终的结果永远是一个String
。
不要这样做
string s = "my string";
s += " is now a little longer";
Run Code Online (Sandbox Code Playgroud)
或者
s = s + " is now longer again";
Run Code Online (Sandbox Code Playgroud)
这将在内存中创建5 个字符串(实际上,见下文)。
做这个:
StringBuilder sb = new StringBuilder();
sb.Append("my string");
sb.Append(" is now a little longer");
sb.Append(" is now longer again");
string s = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
这将在内存中创建1 个字符串(再次参见下文)。
你可以这样做:
string s = "It is now " + DateTime.Now + ".";
Run Code Online (Sandbox Code Playgroud)
这只会在内存中创建1 个字符串。
顺便说一句,创建 aStringBuilder
确实需要一定量的内存。作为一个粗略的经验法则:
StringBuilder
如果要在循环中连接字符串,请始终使用 a 。StringBuilder
如果连接字符串超过 4 次,请使用 a 。 归档时间: |
|
查看次数: |
1057 次 |
最近记录: |