ima*_*age 7 c# string performance
我需要连接很多字符串并在其中任何一个之间加上逗号.我有一个字符串列表
"123123123213"
"1232113213213"
"123213123"
Run Code Online (Sandbox Code Playgroud)
而且我想得到
"123123123213,1232113213213,123213123"
Run Code Online (Sandbox Code Playgroud)
我想知道实现这一目标的最佳方法是什么.
我可以这样做:
private List<string> stringList = new List<string> {
// a lot of strings in here
"1234567890", "34343434", "4343434" };
string outcome = string.Join(",", stringList.ToArray());
Run Code Online (Sandbox Code Playgroud)
或者可能:
StringBuilder builder = new StringBuilder();
stringList.ForEach(val => {
builder.Append(val);
builder.Append(",");
});
string outcome = builder.ToString();
Run Code Online (Sandbox Code Playgroud)
哪种方式更好?你知道连接字符串的更好方法吗?
正如@Ekkehard所说,使用string.Join.
但是,你不需要ToArray()因为string.Join有一个重载IEnumerable<string>.
List<string> stringList = new List<string>
{ "1234567890", "34343434", "4343434" };
string outcome = string.Join(",", stringList);
Run Code Online (Sandbox Code Playgroud)
编辑
正如@Kobi所说,这只适用于C#4.0.在3.5我会这样做.
var s = new StringBuilder(stringList.Count * 8);
foreach (var item in stringList)
{
s.Append(item);
s.Append(',');
}
s.Length -= 1;
string outcome = stringList.ToList();
Run Code Online (Sandbox Code Playgroud)
你应该使用string.Join()因为:
a)它的可读性,可维护性和易用性.
b)它StringBuilder已在内部使用,因此它非常有效(您可以使用Reflector确认自己).
编辑:
string.Join()使用a StringBuilder表示IEnumerable<T>输入的一般情况.如果你已经拥有一个阵列,那么它会使用一些巫术魔法(包括FastAllocateString()和 UnSafeCharBuffer)来加快速度.
| 归档时间: |
|
| 查看次数: |
12656 次 |
| 最近记录: |