gpt4 book ai didi

c# - string.Concat,可变的还是不可变的?

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:47 24 4
gpt4 key购买 nike

据我所知,除非使用 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 ,因为为什么要写一个已经存在的方法。

关于c# - string.Concat,可变的还是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50550269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com