繁体   English   中英

string.Concat,可变还是不可变?

[英]string.Concat, Mutable or Immutable?

据我所知,除非使用StringBuilder类,否则C#中的字符串是不可变的。 情况是,我有一个字符串的ObjectResult(实现IEnumerable),我想将其转换为一个字符串对象。 这里有两个选项:

  1. 使用string.Concat

     var myDesiredData = string.Concat(TheObjectResult) 
  2. 使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM