如果我有一个字符串数组,例如:var array = new[] { "the", "cat", "in", "the", "hat" }
,并且我想在每个单词之间用空格连接它们,我可以简单地调用String.Join(" ", array)
。
但是,假设我有一个整数数组数组(就像我可以有一个字符数组数组一样)。我想将它们组合成一个大数组(将它们展平),但同时在每个数组之间插入一个值。
var arrays = new[] { new[] { 1, 2, 3 }, new[] { 4, 5, 6 }, new { 7, 8, 9 }};
var result = SomeJoin(0, arrays); // result = { 1, 2, 3, 0, 4, 5, 6, 0, 7, 8, 9 }
我写了一些东西,但它非常难看,我确信有更好,更清洁的方式。或许更有效率?
var result = new int[arrays.Sum(a => a.Length) + arrays.Length - 1];
int offset = 0;
foreach (var array in arrays)
{
Buffer.BlockCopy(array, 0, result, offset, b.Length);
offset += array.Length;
if (offset < result.Length)
{
result[offset++] = 0;
}
}
也许这是最有效的?我不知道...只是看看是否有更好的方法。我想也许 LINQ 会解决这个问题,但遗憾的是我没有看到任何我需要的东西。