代码之家  ›  专栏  ›  技术社区  ›  tehvan

从列表<T>到数组T[]的转换

  •  55
  • tehvan  · 技术社区  · 16 年前

    有没有一种转换强类型 List<T> List<MyClass> MyClass[]

    简而言之,我指的是一个方法调用,或至少短于:

    MyClass[] myArray = new MyClass[list.Count];
    int i = 0;
    foreach (MyClass myClass in list)
    {
        myArray[i++] = myClass;
    }
    
    4 回复  |  直到 7 年前
        1
  •  155
  •   Nikos Steiakakis    16 年前

    试用

    MyClass[] myArray = list.ToArray();
    
        2
  •  20
  •   Sessiz Saat    16 年前
    List<int> list = new List<int>();
    int[] intList = list.ToArray();
    

    这是你的解决方案吗?

        3
  •  9
  •   Brian Rasmussen    16 年前

    使用 ToArray() 在…上 List<T> .

        4
  •  9
  •   Bas Bossink    16 年前
    list.ToArray()
    

    我会做的。看见 here 详情请参阅。

        5
  •  0
  •   Nipuna    6 年前

    你可以简单地使用 ToArray()

    例子:

    Person p1 = new Person() { Name = "Person 1", Age = 27 };
    Person p2 = new Person() { Name = "Person 2", Age = 31 };
    
    List<Person> people = new List<Person> { p1, p2 };
    
    var array = people.ToArray();
    

    According to Docs

    Array.Copy() ,这是一个O(n)操作, 其中n是计数。

        6
  •  -1
  •   DragonSpit    6 年前

    list.ToArrayPar();
    
        7
  •  -1
  •   DragonSpit    6 年前

    要避免的一种可能的解决方案是,它使用多个CPU核,预计速度会更快,但执行速度会慢5倍左右:

    list.AsParallel().ToArray();