Ответ 1
Попробуйте использовать
MyClass[] myArray = list.ToArray();
Есть ли короткий способ преобразования строго типизированного List<T>
в массив того же типа, например: List<MyClass>
to MyClass[]
?
Короче говоря, я имею в виду один вызов метода или, по крайней мере, короче:
MyClass[] myArray = new MyClass[list.Count];
int i = 0;
foreach (MyClass myClass in list)
{
myArray[i++] = myClass;
}
Попробуйте использовать
MyClass[] myArray = list.ToArray();
List<int> list = new List<int>();
int[] intList = list.ToArray();
это ваше решение?
Используйте ToArray()
в List<T>
.
list.ToArray()
Будет делать трюк. Подробнее см. здесь.
Вы можете просто использовать ToArray()
расширения 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();
Элементы копируются с помощью
Array.Copy()
, который является операцией O (n), где n - это Count.
Чтобы использовать вдвое быстрее, используя несколько процессорных ядер, пакет HPCsharp nuget предоставляет:
list.ToArrayPar();
Одно из возможных решений, которое следует избегать: использование нескольких ядер ЦП и ожидается, что оно будет работать быстрее, но работает примерно в 5 раз медленнее:
list.AsParallel().ToArray();