我知道字符串在C#中是不可变的,除非使用了StringBuilder类。情况是,我有一个ObjectResult(实现IEnumerable)的字符串,我想将它转换为一个单独的字符串对象。这里有两个选择:
使用string.Concat
var myDesiredData = string.Concat(TheObjectResult)
使用StringBuilder
var sb = new StringBuiler();
foreach (var item in TheObjectResult)
{
sb.Append(item);
}
var myDesiredData = sb.ToString();
我不确定第一个选项是如何工作的。
答案 0 :(得分:6)
两种选择几乎完全相同。这就是string.Concat(IEnumerable<string>)
的实施方式:
[ComVisible(false)]
public static String Concat(IEnumerable<String> values) {
if (values == null)
throw new ArgumentNullException("values");
Contract.Ensures(Contract.Result<String>() != null);
Contract.EndContractBlock();
StringBuilder result = StringBuilderCache.Acquire();
using(IEnumerator<String> en = values.GetEnumerator()) {
while (en.MoveNext()) {
if (en.Current != null) {
result.Append(en.Current);
}
}
}
return StringBuilderCache.GetStringAndRelease(result);
}
我会选择string.Concat
,因为为什么要写一个已存在的方法。