如何在C#中附加一些对象数组?

时间:2011-05-17 09:04:09

标签: c#

  

可能重复:
  How do I concatenate two arrays in C#?

如何将一些对象数组附加到一个大对象数组中?

例如,我有3个类型的元素:object[]并且想要制作其中一个元素。怎么做?

4 个答案:

答案 0 :(得分:12)

使用此:

object[] element1 = ...;
object[] element2 = ...;
object[] element3 = ...;
var list = new List<object>();
list.AddRange(element1);
list.AddRange(element2);
list.AddRange(element3);
var result = list.ToArray();

另一种选择是:

var result = element1.Concat(element2).Concat(element3).ToArray();

答案 1 :(得分:3)

您可以在其上调用方法Concat

 var newArray = a.Concat(b).Concat(c).ToArray();

答案 2 :(得分:3)

根据您需要如何使用组合列表,最高性能的解决方案是将数组提供给迭代器块并以可枚举的方式返回:

IEnumerable<object> CombineArrays ( params object[] arrays )
{
     foreach (object[] arr in arrays )
     {
          foreach (object obj in arr)
          { 
               yield return obj;
          }
     }
} 

... 

IEnumerable<object> result = CombineArrays ( array1, array2, array3);

对于新的组合列表,这种方式不需要任何额外的存储空间。 IEnumerable结果将依次枚举数组。您可以使用任何Linq运算符处理结果 - 因此您可以根据需要进行分组,过滤和选择。

如果您需要创建一个可写列表,则需要在结果上调用ToList()ToArray()

答案 3 :(得分:1)

或者好的,老式的方式:

object[] objects = new object[objects1.Length + objects2.Length + objects3.Length];
int i = 0;
for(int j = 0; j<objects1.Length; j++)
  objects[i++] = objects1[j];
for(int j = 0; j<objects2.Length; j++)
  objects[i++] = objects2[j];
for(int j = 0; j<objects3.Length; j++)
  objects[i++] = objects3[j];