.NET 3.0 и после:
Вызовите метод расширения ToArray
для IEnumerable<T>
, он выполняет почти то же действие, что и ниже, выполняет анализ типа и некоторые другие оптимизации.
.NET 2.0 и ранее:
Вообще говоря, использование List<T>
, которое будет инициализировано с IEnumerable<T>
, а затем вызов ToArray
, является, вероятно, самым простым способом сделай это.
Конструктор для List<T>
проверит IEnumerable<T>
, чтобы увидеть, реализует ли он ICollection<T>
, чтобы получить количество элементов для правильной инициализации емкости списка. Если нет, он будет расширяться как обычно.
Конечно, вы можете в конечном итоге создать несколько List<T>
экземпляров только для преобразования IEnumerable<T>
в T[]
. Для этого вы можете написать свой собственный метод, но на самом деле вы просто дублируете код, уже существующий в List<T>
.