[英]Purpose of String.Concat(Object) instead of String.Concat(String)
[英]string.Concat, Mutable or Immutable?
据我所知,除非使用StringBuilder类,否则C#中的字符串是不可变的。 情况是,我有一个字符串的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();
我不确定第一个选项的工作方式。
两种选择几乎相同。 这是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
,因为为什么要编写一个已经存在的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.