我对使用StringBuilder课程感到困惑,首先:
一个
string对象串联操作总是创建从现有的一个新的对象string和新的数据.甲StringBuilder对象维护一个缓冲器,以适应新的数据的串联.如果房间可用,新数据将附加到缓冲区的末尾; 否则,分配一个新的较大缓冲区,将原始缓冲区中的数据复制到新缓冲区,然后将新数据附加到新缓冲区.
但是创建StringBuilder实例以避免创建新实例的重点在哪里String?这听起来像是"一对一"交易.
static void Main(string[] args)
{
String foo = "123";
using (StringBuilder sb = new StringBuilder(foo)) // also sb isn't disposable, so there will be error
{
sb.Append("456");
foo = sb.ToString();
}
Console.WriteLine(foo);
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
为什么我不应该只使用
+=
Run Code Online (Sandbox Code Playgroud)
编辑:好的,我现在知道如何重用的一个实例StringBuilder(仍然不知道这是否是正确的代码标准),但是这是不值得的只有一个使用string的,不是吗?
StringBuilder类是如何实现的?每次追加时它是否在内部创建新的字符串对象?
StringBuilder工作怎么样?
它内部有什么作用?它使用不安全的代码吗?为什么它如此之快(与+运营商相比)?
可能重复:
使用C#的最佳字符串连接方法是什么?
嗨,
我有一个这样的代码片段,其中从文件中读取大量数据并检查每个位置的某些值并连接一个字符串.
这种字符串连接需要大量的时间和处理能力.有没有办法减少执行时间?
重要提示:阅读内容文件语法不正确只需要提出一个想法
string x;
while (var < File.Length)
{
if (File.Content[var] == "A")
{
x += 1;
}
else
{
x += 0;
}
var++;
}
Run Code Online (Sandbox Code Playgroud)