首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在.NET中合并两个数组

在.NET中合并两个数组
EN

Stack Overflow用户
提问于 2008-09-12 15:07:05
回答 22查看 442.9K关注 0票数 271

.NET 2.0中有没有一个内置的函数,可以接受两个数组并将它们合并成一个数组?

这两个数组属于同一类型。我从我的代码库中广泛使用的函数中获得这些数组,并且不能修改该函数以不同的格式返回数据。

如果可能的话,我希望避免编写自己的函数来实现这一点。

EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2008-09-12 15:16:36

如果可以操作其中一个数组,则可以在执行复制之前调整其大小:

代码语言:javascript
复制
T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
int array1OriginalLength = array1.Length;
Array.Resize<T>(ref array1, array1OriginalLength + array2.Length);
Array.Copy(array2, 0, array1, array1OriginalLength, array2.Length);

否则,您可以创建一个新的数组

代码语言:javascript
复制
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);

More on available Array methods on MSDN

票数 134
EN

Stack Overflow用户

发布于 2008-09-12 15:19:11

在Linq3.0中,您可以使用C#的Concat方法轻松完成此操作:

代码语言:javascript
复制
int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = front.Concat(back).ToArray();

在C# 2.0中,您没有这样直接的方式,但是Array.Copy可能是最好的解决方案:

代码语言:javascript
复制
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版本。

票数 511
EN

Stack Overflow用户

发布于 2014-05-23 14:50:23

使用LINQ

代码语言:javascript
复制
var arr1 = new[] { 1, 2, 3, 4, 5 };
var arr2 = new[] { 6, 7, 8, 9, 0 };
var arr = arr1.Union(arr2).ToArray();

请记住,这将删除重复项。如果您想保留副本,请使用Concat。

票数 118
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档