如何在 C# 中追加一些对象数组
本文关键字:对象 数组 追加 | 更新日期: 2023-09-27 17:56:45
可能的重复项:
如何在 C# 中连接两个数组?
如何将一些对象数组附加到一个大对象数组中?
例如,我有 3 个类型元素:object[]
,并希望制作其中之一。怎么做?
使用这个:
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];