.NET 2.0中是否有内置函数,它将采用两个数组并将它们合并为一个数组?
这些数组都是相同的类型.我从我的代码库中广泛使用的函数中获取这些数组,并且无法修改函数以返回不同格式的数据.
我希望尽可能避免编写自己的功能来实现这一目标.
在C#3.0中,您可以使用LINQ的Concat方法轻松完成此任务:
int[] front = { 1, 2, 3, 4 }; int[] back = { 5, 6, 7, 8 }; int[] combined = front.Concat(back).ToArray();
在C#2.0中,你没有这样的直接方式,但Array.Copy可能是最好的解决方案:
int[] front = { 1, 2, 3, 4 }; int[] back = { 5, 6, 7, 8 }; int[] combined = new int[front.Length + back.Length]; Array.Copy(front, combined, front.Length); Array.Copy(back, 0, combined, front.Length, back.Length);
这可以很容易地用于实现您自己的版本Concat
.
如果您可以操作其中一个阵列,则可以在执行复制之前调整其大小:
T[] array1 = getOneArray(); T[] array2 = getAnotherArray(); int array1OriginalLength = array1.Length; Array.Resize(ref array1, array1OriginalLength + array2.Length); Array.Copy(array2, 0, array1, array1OriginalLength, array2.Length);
否则,您可以创建一个新数组
T[] array1 = getOneArray(); T[] array2 = getAnotherArray(); T[] newArray = new T[array1.Length + array2.Length]; Array.Copy(array1, newArray, array1.Length); Array.Copy(array2, 0, newArray, array1.Length, array2.Length);
有关MSDN上可用的数组方法的更多信息.
使用LINQ:
var arr1 = new[] { 1, 2, 3, 4, 5 }; var arr2 = new[] { 6, 7, 8, 9, 0 }; var arr = arr1.Union(arr2).ToArray();
如果您不想删除重复项,请尝试此操作
使用LINQ:
var arr1 = new[] { 1, 2, 3, 4, 5 }; var arr2 = new[] { 6, 7, 8, 9, 0 }; var arr = arr1.Concat(arr2).ToArray();
首先,确保你问自己"我真的应该在这里使用数组"这个问题吗?
除非你正在构建一个速度至关重要的东西,否则一个类型化的列表就好像List
是要走的路.我通过网络发送内容时,唯一使用数组的是字节数组.除此之外,我从不接触它们.
更容易使用LINQ:
var array = new string[] { "test" }.ToList(); var array1 = new string[] { "test" }.ToList(); array.AddRange(array1); var result = array.ToArray();
首先将数组转换为列表并合并它们...之后只需将列表转换回数组:)
我认为你可以使用Array.Copy.它需要一个源索引和目标索引,因此您应该能够将一个数组附加到另一个数组.如果你需要更复杂而不仅仅是将一个附加到另一个,这可能不适合你.
假设目标阵列有足够的空间,Array.Copy()
将起作用.您也可以尝试使用a List
及其.AddRange()
方法.