如何追加一些对象数组合并为一个大的对象数组?
例如,我有3个元素类型:object[]
并且想要制作其中的一个。这个怎么做?
如何追加一些对象数组合并为一个大的对象数组?
例如,我有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();
还是不错的,老式的方式:
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];
没有必要使这样的事情复杂化.. – 2011-05-17 09:10:04
我不会称之为“复杂”。这可能是编译器最终创建的。 – Carra 2011-05-17 09:12:45
+1:此代码正在工作,不需要downvote。 – 2011-05-17 09:13:57
取决于你需要如何使用组合列表,最高效的解决方案将是您的阵列送入迭代器块和枚举返回:
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()
。
+1:非常好的主意! – 2011-05-17 09:13:28
你必须使用数组吗?如果没有,我会强烈推荐一个列表(http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx) – ThePower 2011-05-17 09:05:26
你想合并数组的权利? – 2011-05-17 09:05:35