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

本文关键字:对象 数组 追加 | 更新日期: 2023-09-27 17:56:45

可能的重复项:
如何在 C# 中连接两个数组?

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

例如,我有 3 个类型元素:object[],并希望制作其中之一。怎么做?

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

使用这个:

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();

您可以在它们上调用方法Concat

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

根据您需要如何使用组合列表,性能最高的解决方案是将数组馈送到迭代器块中,并在 enumerable 返回:

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()结果。

或者好的,老式的方式:

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];