我最近被问到这个问题:String和StringBuilders之间有什么区别?
我知道我已经在某处读过StringBuilders是不可变的,但是不可变的是什么以及StringBuilder上的操作如何变得比String更快,我没有意识到.
请任何人帮我理解这个吗?
不,String是不可变的 - 而是StringBuilder可变的.这就是它的全部意义.您可以使用它来构建字符串,通常来自许多追加操作.您可以在不创建每次所有数据的全新副本的情况下执行此操作,如果您使用String以下情况会发生这种情况:
// Bad
string x = "";
for (int i = 0; i < 100; i++)
{
x += i;
}
// Good
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 100; i++)
{
builder.Append(i);
}
string x = builder.ToString();
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅我关于字符串连接的文章以及关于字符串的其他文章.
通常,不可变数据类型是在创建后无法更改对象中的数据的类型,而可变数据类型允许您更改(变异,因此名称)它.它并不像听起来那么简单 - 请参阅Eric Lippert关于更多信息的各种不变性的博客文章.
| 归档时间: |
|
| 查看次数: |
3169 次 |
| 最近记录: |