c# - 如何将 int[] 连接到 .NET 中的字符分隔字符串?

标签 c# .net .net-3.5

我有一个整数数组:

int[] number = new int[] { 2,3,6,7 };

将这些数字转换为由字符分隔的单个字符串(如:"2,3,6,7")的最简单方法是什么?

我正在使用 C# 和 .NET 3.5。

最佳答案

var ints = new int[] {1, 2, 3, 4, 5};
var result = string.Join(",", ints.Select(x => x.ToString()).ToArray());
Console.WriteLine(result); // prints "1,2,3,4,5"

从(至少).NET 4.5 开始,

var result = string.Join(",", ints.Select(x => x.ToString()).ToArray());

相当于:

var result = string.Join(",", ints);

我看到几个解决方案宣传 StringBuilder 的用法。有人提示 Join 方法应该采用 IEnumerable 参数。

我要让你失望了:) String.Join 需要一个数组的原因只有一个——性能。 Join 方法需要知道数据的大小才能有效地预分配必要的内存量。

下面是String.Join方法内部实现的一部分:

// length computed from length of items in input array and length of separator
string str = FastAllocateString(length);
fixed (char* chRef = &str.m_firstChar) // note than we use direct memory access here
{
    UnSafeCharBuffer buffer = new UnSafeCharBuffer(chRef, length);
    buffer.AppendString(value[startIndex]);
    for (int j = startIndex + 1; j <= num2; j++)
    {
        buffer.AppendString(separator);
        buffer.AppendString(value[j]);
    }
}

关于c# - 如何将 int[] 连接到 .NET 中的字符分隔字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/145856/

相关文章:

.net - 如何使用 Unity DI 加载具有依赖项的程序集,然后注册内部组件

c# - 有什么方法可以防止/检测自动/隐式类型转换?

c# - 最小化 FormClose 防止计算机关机

c# - 加载数据并在此期间显示启动画面

c# - 有没有办法在 .NET 3.0 项目中使用 LINQ 查询语法?

c# - 来自 .axml 布局的 Android 控件的 Xamarin.Forms 自定义渲染器

c# - 理论 : Implementing MSMQ using SSL to send message

c# - Interop Excel UsedRange 行计数不正确

c# - nHibernate QueryOver 中的 GROUP BY 和 HAVING 子句

c# - 使用 Entity Framework 的唯一主键