【问题标题】:How to append some object arrays in C#? [duplicate]如何在 C# 中附加一些对象数组? [复制]
【发布时间】:2011-05-17 09:04:09
【问题描述】:

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

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

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

【问题讨论】:

标签: c#


【解决方案1】:

使用这个:

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

【讨论】:

    【解决方案2】:

    你可以在他们身上调用Concat方法

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

    【讨论】:

      【解决方案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()

      【讨论】:

        【解决方案4】:

        或者好的,老式的方式:

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

        【讨论】:

        • 没有必要把事情复杂化......
        • 我不会称之为“复杂”。这可能是编译器最终会创建的内容。
        • +1:此代码有效,无需投票。
        • 抱歉,当我问“我如何到达 Mapple 街”时?我更喜欢直接的答案给我最短的路径,而不是让我绕着圈子走的答案。没错,最终结果是一样的,但为什么要重新发明轮子呢?
        • 如果问题是关于 C/C++ 的,这应该是答案。很抱歉,这对于 C# 编程是不可接受的。
        猜你喜欢
        • 1970-01-01
        • 2017-10-13
        • 1970-01-01
        • 2013-04-27
        • 2021-10-07
        • 2019-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多