连接字符串最有效的方法是什么?
当前回答
如果你在循环中操作,StringBuilder可能是最好的选择;它节省了定期创建新字符串的开销。在只运行一次的代码中,字符串。Concat可能没问题。
然而,Rico Mariani(。NET优化大师)做了一个测试,他在测试的最后说,在大多数情况下,他建议使用String.Format。
其他回答
这取决于代码。 StringBuilder通常更高效,但如果您只是连接几个字符串并在一行中完成所有操作,那么代码优化可能会为您解决这个问题。考虑代码的外观也很重要:对于较大的集合,StringBuilder将使其更容易阅读,对于较小的集合,StringBuilder只会增加不必要的混乱。
同样重要的是,如果要连接字符串字面量,则应该使用+运算符。
当您使用+运算符连接字符串字面值或字符串常量时,编译器将创建一个单独的字符串。没有发生运行时连接。
如何:连接多个字符串(c#编程指南)
另一个解决方案:
在循环中,使用List而不是string。
List<string> lst= new List<string>();
for(int i=0; i<100000; i++){
...........
lst.Add(...);
}
return String.Join("", lst.ToArray());;
它非常非常快。
对于只有两个字符串,您肯定不希望使用StringBuilder。如果超过某个阈值,StringBuilder开销将小于分配多个字符串的开销。
所以,对于超过2-3个字符串,使用DannySmurf的代码。否则,只需使用+运算符。
字符串连接有6种类型:
使用加号。 使用string.Concat()。 使用string.Join()。 使用string.Format()。 使用string.Append()。 使用StringBuilder。
在一个实验中,已经证明string.Concat()是最好的方法,如果单词少于1000(大约),如果单词超过1000,那么应该使用StringBuilder。
欲了解更多信息,请访问该网站。
string.Join() vs string.Concat() 的字符串。Concat方法在这里等价于字符串。用空分隔符连接方法调用。追加一个空字符串很快,但不这样做更快,所以字符串。Concat法在这里更优越。
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 为什么Visual Studio 2015/2017/2019测试运行器没有发现我的xUnit v2测试
- 确定记录是否存在的最快方法
- 如何使用JSON确保字符串是有效的JSON。网
- Printf与std::字符串?
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 阅读GHC核心
- 如何检查IEnumerable是否为空或空?
- 不区分大小写的“in”
- 自动化invokerrequired代码模式
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 没有ListBox。SelectionMode="None",是否有其他方法禁用列表框中的选择?
- 在c#代码中设置WPF文本框的背景颜色