J L*_*erg 0 c# stringbuilder split
我有一个List<string>我正在迭代并拆分每个项目然后将其添加到StringBuilder.
foreach(string part in List)
{
StringBuilder.Append(part.Split(':')[1] + " ");
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是通过这种分割创建了多少个字符串?所有拆分都将产生两个项目.所以...我在想它会创建一个string[2]然后是一个空字符串.但是,它是否会创建连接,string[1] + " "然后将其添加到StringBuilder或优化?
代码实际上等同于:
foreach(string part in myList)
{
sb.Append(string.Concat(part.Split(':')[1], " "));
}
Run Code Online (Sandbox Code Playgroud)
所以是的,一个额外的string,表示分割的第二部分和空字符串的串联将被创建.
包括原始string,你还有两个由调用创建的Split(),以及对文字字符串的引用" ",它将从程序集元数据中加载.
你可以Concat()通过Append顺序分割结果和空字符串来保存自己的调用:
sb.Append(part.Split(':')[1]).Append(" ");
Run Code Online (Sandbox Code Playgroud)
请注意,如果您只使用字符串文字,那么编译器将为您进行一次优化:
sb.Append("This is " + "one string");
Run Code Online (Sandbox Code Playgroud)
实际编译为
sb.Append("This is one string");
Run Code Online (Sandbox Code Playgroud)