Операции ToArray и ToList

53

Следующие операции преобразования предоставляют простой и удобный способ преобразования последовательностей в другие типы коллекций.

ToArray

Операция ToArray создает массив типа T из входной последовательности типа T. Эта операция имеет один прототип, описанный ниже:

public static Т[] ToArray<T>( 
      this IEnumerable<T> source);

Эта операция берет входную последовательность source с элементами типа T и возвращает массив элементов типа Т.

Для примера, демонстрирующего работу операции ToArray, понадобится последовательность типа IEnumerable<T>. Последовательность этого типа создается вызовом операции Enumerable.Range(), которая была описана ранее. Имея такую последовательность, можно вызывать операцию ToArray для создания массива, как показано ниже:

IEnumerable<int> item = Enumerable.Range(1, 20);

Console.WriteLine("Начальный тип: " + item);

int[] arr = item.ToArray();

Console.WriteLine("Используем ToArray: " + arr);
Использование операции ToArray

Эта операция часто бывает удобной для кэширования последовательности, чтобы она не могла измениться до начала ее перечисления. К тому же, поскольку эта операция не является отложенной и выполняется немедленно, множество перечислений, созданных на одном массиве, всегда будут видеть одни и те же данные.

ToList

Операция ToList создает List типа T из входной последовательности типа Т. Эта операция имеет один прототип, описанный ниже:

public static List<T> ToList<T>( 
      this IEnumerable<T> source);

Данная операция принимает последовательность по имени source элементов типа T и возвращает список List элементов типа Т. Ниже демонстрируется применение операции ToList:

string[] cars = { "Alfa Romeo", "Aston Martin", "Audi", "Nissan", "Chevrolet",  "Chrysler", "Dodge", "BMW", 
                            "Ferrari",  "Bentley", "Ford", "Lexus", "Mercedes", "Toyota", "Volvo", "Subaru", "Жигули :)"};

List<string> auto = cars.ToList();

foreach (string s in auto)
        Console.Write(s + "  ");

В приведенном коде используется массив, состоящий из названий машин. Этот массив преобразуется в список List<string>. Вот результат:

Использование операции ToList

Эта операция часто полезна для кэширования последовательности, чтобы она не могла измениться перед ее перечислением. Также, поскольку эта операция не является отложенной и выполняется немедленно, множество перечислений на созданном списке List<T> всегда видят одинаковые данные.

Пройди тесты
Лучший чат для C# программистов