Класс List в C# и его методы

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

Методы класса List

Имя Описание
Add Добавляет объект в конец коллекции List <T>.
AddRange Добавляет элементы указанной коллекции в конец списка List <T>.
AsReadOnly Возвращает для текущей коллекции оболочку IList <T>, доступную только для чтения.
BinarySearch Перегружен. Использует алгоритм двоичного поиска для нахождения определенного элемента в отсортированном списке List <T> или в его части.
Clear Удаляет все элементы из коллекции List <T>.
Contains Определяет, входит ли элемент в состав List <T>.
ConvertAll<(Of <(TOutput>)>) Преобразует элементы текущего списка List <T> в другой тип и возвращает список преобразованных элементов.
CopyTo Перегружен. Копирует список List <T> или его часть в массив.
Equals Определяет, равен ли заданный объект Object текущему объекту Object. (Унаследовано от Object.)
Exists Определяет, содержит ли List <T> элементы, удовлетворяющие условиям указанного предиката.
Finalize Позволяет объекту Object попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект Object будет утилизирован в процессе сборки мусора. (Унаследовано от Object.)
Find Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает первое найденное вхождение в пределах всего списка List <T>.
FindAll Извлекает все элементы, удовлетворяющие условиям указанного предиката.
FindIndex Перегружен. Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого найденного вхождения в пределах всего списка List <T> или его части.
FindLast Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает последнее найденное вхождение в пределах всего списка List <T>.
FindLastIndex Перегружен. Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс последнего найденного вхождения в пределах всего списка List <T> или его части.
ForEach Выполняет указанное действие с каждым элементом списка List <T>.
GetEnumerator Возвращает перечислитель, осуществляющий перебор элементов списка List <T>.
GetHashCode Играет роль хэш-функции для определенного типа. (Унаследовано от Object.)
GetRange Создает неполную копию диапазона элементов исходного списка List <T>.
GetType Возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)
IndexOf Перегружен. Возвращает отсчитываемый от нуля индекс первого вхождения значения в списке List <T> или в его части.
Insert Добавляет элемент в список List <T> в позиции с указанным индексом.
InsertRange Вставляет элементы коллекции в список List <T> в позиции с указанным индексом.
LastIndexOf Перегружен. Возвращает отсчитываемый от нуля индекс последнего вхождения значения в списке List <T> или в его части.
MemberwiseClone Создает неполную копию текущего объекта Object. (Унаследовано от Object.)
Remove Удаляет первое вхождение указанного объекта из коллекции List <T>.
RemoveAll Удаляет все элементы, удовлетворяющие условиям указанного предиката.
RemoveAt Удаляет элемент списка List <T> с указанным индексом.
RemoveRange Удаляет диапазон элементов из списка List <T>.
Reverse Перегружен. Изменяет порядок элементов в списке List <T> или в его части на обратный.
Sort Перегружен. Сортирует элементы в списке List <T> или в его части.
ToArray Копирует элементы списка List <T> в новый массив.
ToString Возвращает объект String, который представляет текущий объект Object. (Унаследовано от Object.)
TrimExcess яадает емкость, равную фактическому числу элементов в списке List <T>, если это число меньше порогового значения.
TrueForAll Определяет, все ли элементы списка List <T> удовлетворяют условиям указанного предиката.

Метод Add

Метод Add() добавляет объект в конец коллекции List.

Синтаксис

public void Add(T item)

Пример:

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

        dinosaurs.Add("Tyrannosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Compsognathus");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);

        Console.WriteLine("\nContains(\"Deinonychus\"): {0}",
            dinosaurs.Contains("Deinonychus"));

        Console.WriteLine("\nInsert(2, \"Compsognathus\")");
        dinosaurs.Insert(2, "Compsognathus");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);

        Console.WriteLine("\nRemove(\"Compsognathus\")");
        dinosaurs.Remove("Compsognathus");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        dinosaurs.TrimExcess();
        Console.WriteLine("\nTrimExcess()");
        Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);

        dinosaurs.Clear();
        Console.WriteLine("\nClear()");
        Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);
    }
}

/* This code example produces the following output:

Capacity: 0

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

Capacity: 8
Count: 5

Contains("Deinonychus"): True

Insert(2, "Compsognathus")

Tyrannosaurus
Amargasaurus
Compsognathus
Mamenchisaurus
Deinonychus
Compsognathus

dinosaurs[3]: Mamenchisaurus

Remove("Compsognathus")

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

TrimExcess()
Capacity: 5
Count: 5

Clear()
Capacity: 5
Count: 0
*/

Метод AddRange

Добавляет элементы указанной коллекции в конец списка List<T>. Т.е. все элементы, которые вы передаёте как аргумент добавляются один за другим в конец списка.

Порядок элементов коллекции сохраняется в списке List<T>.

Если новое значение свойства Count (текущее значение Count плюс размер коллекции) превышает значение Capacity, емкость списка List<T> увеличивается путем автоматического перераспределения внутреннего массива для размещения новых элементов, и существующие элементы копируются в новый массив перед добавлением новых элементов.

Если список List<T> может вместить новые элементы без увеличения значения свойства Capacity, этот метод является операцией порядка сложности O(n), где n — количество добавляемых элементов. Если емкость приходится увеличивать для размещения новых элементов, этот метод становится операцией порядка сложности O(n + m), где n — число добавляемых элементов, а m равно Count.

Синтаксис

public ReadOnlyCollection<T> AsReadOnly()

Пример:

В следующем примере кода демонстрируется метод AddRange и ряд других методов класса List<T>, применяемых к диапазонам. Создается массив строк, который передается в конструктор, и список заполняется элементами массива. Вызывается метод AddRange с указанием списка в качестве аргумента. В результате текущие элементы списка добавляются в его конец, т. е. все элементы дублируются.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
         string[] input = { "Brachiosaurus",
                           "Amargasaurus",
                           "Mamenchisaurus" };// массив строк, который добавляется в список         
         List<string> dinosaurs = new List<string>(input); // создаём список из исходного массива         
         Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

         // выводим на экран список        
         Console.WriteLine();
         foreach( string dinosaur in dinosaurs ) //пока есть элементы в списке, выводим их на экран        
         {
            Console.WriteLine(dinosaur);        
         }
         Console.WriteLine("\nAddRange(dinosaurs)");
         dinosaurs.AddRange(dinosaurs); // добавляем диапазон значений в список
         Console.WriteLine();          foreach( string dinosaur in dinosaurs )
         {
            Console.WriteLine(dinosaur); // снова выводим список
         }
         Console.WriteLine("\nRemoveRange(2, 2)");
         dinosaurs.RemoveRange(2, 2); //  удаляем из списка 2 элемента начиная со второго
         Console.WriteLine();
         foreach( string dinosaur in dinosaurs )
         {
            Console.WriteLine(dinosaur); // снова выводим список
         }
         input = new string[] { "Tyrannosaurus",
                               "Deinonychus",
                               "Velociraptor"};// создаём новый список строк
         Console.WriteLine("\nInsertRange(3, input)");
         dinosaurs.InsertRange(3, input); // вставляем диапазон значений imput, начиная с третьей позиции. (0,1,2,3)
         Console.WriteLine();
         foreach( string dinosaur in dinosaurs )
         {
             Console.WriteLine(dinosaur); // выводим список на экран
         }
         Console.WriteLine("\noutput = dinosaurs.GetRange(2, 3).ToArray()");
         string[] output = dinosaurs.GetRange(2, 3).ToArray(); // создаём массив, выбирая из списка диапазон значений длинной 3, начиная со второго элемента
         Console.WriteLine();
         foreach( string dinosaur in output )
         {
            Console.WriteLine(dinosaur); // выводим список на экран
         }
       }
   }
  /* This code example produces the following output:

Capacity: 3

Brachiosaurus
Amargasaurus
Mamenchisaurus

AddRange(dinosaurs)

Brachiosaurus
Amargasaurus
Mamenchisaurus
Brachiosaurus
Amargasaurus
Mamenchisaurus

RemoveRange(2, 2)

Brachiosaurus
Amargasaurus
Amargasaurus
Mamenchisaurus

InsertRange(3, input)

Brachiosaurus
Amargasaurus
Amargasaurus
Tyrannosaurus
Deinonychus
Velociraptor
Mamenchisaurus

output = dinosaurs.GetRange(2, 3).ToArray()

Amargasaurus
Tyrannosaurus
Deinonychus
*/

Метод AsReadOnly

Возвращает для текущей коллекции оболочку IList<T>, доступную только для чтения. Т.е можно создать оболочку данного объекта, доступного только для чтения. При этом важным моментом является то, что при изменении исходного объекта оболочка меняется тут же.

Чтобы предотвратить любые изменения списка List<T>, доступ к List<T> следует предоставлять только через эту оболочку.

Коллекция, предназначенная только для чтения, — это просто коллекция с оболочкой, предотвращающей ее изменение, т. е. если в базовую коллекцию вносятся изменения, они отражаются в коллекции, доступной только для чтения.

Этот метод является операцией порядка сложности O(1).

Синтаксис

public ReadOnlyCollection<T> AsReadOnly()

Пример:

В следующем примере кода демонстрируется использование метода AsReadOnly. Создается список строк List<T> с емкостью 4, поскольку известен конечный размер списка (4). Список заполняется четырьмя строками, и с помощью метода AsReadOnly возвращается доступная только для чтения реализация универсального интерфейса IList<T>, служащая оболочкой для исходного списка.

Элементу исходного списка присваивается значение "Coelophysis" с помощью свойства Item (индексатор в C#), и содержимое списка, доступного только для чтения, выводится вновь, демонстрируя, что это лишь оболочка исходного списка.

using System;
using System.Collections.Generic;
public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>(4);// создаём список из 4 строк
        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
        // Добавляем по очереди по одному элементу
        dinosaurs.Add("Tyrannosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");
        // Выводим на экран
        Console.WriteLine();
        foreach(string s in dinosaurs)
        {
            Console.WriteLine(s);
        }
        Console.WriteLine("\nIList<string> roDinosaurs = dinosaurs.AsReadOnly()");
        IList<string> roDinosaurs = dinosaurs.AsReadOnly(); // Создаём дубликат "только для чтения"
        Console.WriteLine("\nElements in the read-only IList:");
        // Выводим на экран
        foreach(string dinosaur in roDinosaurs)
        {
            Console.WriteLine(dinosaur);
        }
        Console.WriteLine("\ndinosaurs[2] = \"Coelophysis\"");
        dinosaurs[2] = "Coelophysis"; //изменяем в начальном списке 2-ой элемент
        // Выводим на экран оболочку "только для чтения"
        Console.WriteLine("\nElements in the read-only IList:");
        foreach(string dinosaur in roDinosaurs)
        {
            Console.WriteLine(dinosaur);
        }
    }
}
/* This code example produces the following output:
Capacity: 4
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
IList<string> roDinosaurs = dinosaurs.AsReadOnly()
Elements in the read-only IList:
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
dinosaurs[2] = "Coelophysis"
Elements in the read-only IList:
Tyrannosaurus
Amargasaurus
Coelophysis
Deinonychus */

Метод BinarySearch (T)

Выполняет поиск элемента по всему отсортированному списку List<T>, используя компаратор по умолчанию, и возвращает индекс элемента, отсчитываемый от нуля.

Важные моменты:

1. Список List<T> уже должен быть отсортирован в соответствии с реализацией компаратора, в противном случае будет получен неверный результат.
2. Если список List<T> содержит несколько элементов с одинаковыми значениями, метод BinarySearch ( T ) возвращает только один элемент, причем не обязательно самый первый.
3. Допускается сравнение значения null с любым ссылочным типом; оно не генерирует исключение при использовании универсального интерфейса IComparable<T>.При сортировке значение null считается меньшим любого другого объекта.
4. Если List<T> не содержит заданного значения, метод BinarySearch ( T ) возвращает отрицательное целое число. К этому числу можно применить операцию поразрядного дополнения (~) для получения индекса первого элемента, большего, чем искомое значение.Вставка значения в список List<T> должна производиться в позиции, заданной этим индексом, чтобы сохранить порядок сортировки.
5. Для определения порядка элементов списка метод BinarySearch ( T ) использует компаратор (Шаблон сравнения) по умолчанию Comparer<T>.Default для типа T
Перед сравнением проверяется реализован ли для данного типа данных Т шаблон сравнения Comparer<T>.Default, и использует эту реализацию, если она доступна.
Если она недоступна,Comparer<T>.Default проверяет, реализует ли тип T интерфейс IComparable. Если тип T не реализует эти интерфейсы,Comparer<T>.Default генерирует исключение InvalidOperationException.
6. Этот метод является операцией порядка сложности O(log n), где n — количество элементов в диапазоне.

Синтаксис

public int BinarySearch (T item)

Пример:

В следующем примере кода демонстрируется перегрузка методаSort() и перегрузка методаBinarySearch(T).Создается список строк List<T>, который заполняется четырьмя строками в произвольном порядке.Список выводится, сортируется и затем выводится снова.

Затем используется перегрузка методаBinarySearch(T) для поиска двух строк, не включенных в список, и эти строки вставляются с помощью методаInsert.Возвращаемое значение методаBinarySearch(T) будет отрицательным в каждом случае, поскольку строки не входят в список.Поразрядное дополнение (оператор ~ в C# и Visual C++,Xor -1 в Visual Basic) этого отрицательного числа дает индекс первого элемента в списке, большего, чем искомая строка, и вставка в эту позицию позволяет сохранить порядок сортировки.Вторая искомая строка больше любого элемента списка, поэтому позиция вставки приходится на конец списка.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new  List<string>();
        dinosaurs.Add("Pachycephalosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }
        Console.WriteLine("\n Сортируем список");
        dinosaurs.Sort();
        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("применяем метод BinarySearch и вставляем в найденную позицию
          элемент "Coelophysis":");
        int index = dinosaurs.BinarySearch("Coelophysis");
        if (index < 0)
        {
            dinosaurs.Insert(~index, "Coelophysis"); // ищем значение "Coelophysis",
            // ~index - необходимо, в случе, если нет такого элемента в списке,
            // тогда index будет увеличен до индекса первого элемента, большего,
            // чем искомое значение
        }

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("применяем метод BinarySearch и вставляем в найденную
              позицию элемент "Tyrannosaurus":");
        index = dinosaurs.BinarySearch("Tyrannosaurus");
        if (index < 0)
        {
            dinosaurs.Insert(~index, "Tyrannosaurus");
        }

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }
    }
}

/* Этот код показывает работу метода BinarySearch(T item):

Pachycephalosaurus
Amargasaurus
Mamenchisaurus
Deinonychus

Сортируем список

Amargasaurus
Deinonychus
Mamenchisaurus
Pachycephalosaurus

применяем метод BinarySearch и вставляем в найденную позицию элемент "Coelophysis":

Amargasaurus
Coelophysis
Deinonychus
Mamenchisaurus
Pachycephalosaurus

применяем метод BinarySearch и вставляем в найденную позицию элемент "Tyrannosaurus":

Amargasaurus
Coelophysis
Deinonychus
Mamenchisaurus
Pachycephalosaurus
Tyrannosaurus*/

Метод BinarySearch (T, IComparer<T>)

Метод BinarySearch ( T item, IComparer<T> comparer) Выполняет поиск элемента по всему отсортированному списку List<T>, используя указанный компаратор, и возвращает индекс элемента, отсчитываемый от нуля.

Отсчитываемый от нуля индекс элемента item в отсортированном списке List<T>, если элемент item найден; в противном случае — отрицательное число, которое является поразрядным дополнением индекса следующего элемента, большего, чем item, или, если большего элемента не существует, поразрядным дополнением значения Count.

Важные моменты:
1. Компаратор определяет способ сравнения элементов.Например, для поиска строки без учета регистра в качестве компаратора можно использовать экземпляр класса CaseInsensitiveComparer.
2. Если указан параметр comparer, элементы списка List<T> сравниваются с заданным значением с помощью указанной реализации IComparer<T>.
3. Если в качестве comparer задано null, компаратор по умолчанию Comparer<T>.Default проверяет, реализует ли тип T универсальный интерфейс IComparable<T>, и использует эту реализацию, если она доступна.Если она недоступна, Comparer<T>.Default проверяет, реализует ли тип T интерфейс IComparable.Если тип T не реализует эти интерфейсы, Comparer<T>.Default генерирует исключение InvalidOperationException.
4. Список List<T> уже должен быть отсортирован в соответствии с реализацией компаратора, в противном случае будет получен неверный результат.
5. Если список List<T> содержит несколько элементов с одинаковыми значениями, метод BinarySearch ( T item, IComparer<T> comparer) возвращает только один элемент, причем не обязательно самый первый.
6. Допускается сравнение значения null с любым ссылочным типом; оно не генерирует исключение при использовании универсального интерфейса IComparable<T>.При сортировке значение null считается меньшим любого другого объекта.
7. Если List<T> не содержит заданного значения, метод BinarySearch ( T item, IComparer<T> comparer) возвращает отрицательное целое число. К этому числу можно применить операцию поразрядного дополнения (~) для получения индекса первого элемента, большего, чем искомое значение.Вставка значения в список List<T> должна производиться в позиции, заданной этим индексом, чтобы сохранить порядок сортировки.
8. Для определения порядка элементов списка метод BinarySearch ( T item, IComparer<T> comparer) использует компаратор (Шаблон сравнения) по умолчанию Comparer<T>.Default для типа T
Перед сравнением проверяется реализован ли для данного типа данных Т шаблон сравнения Comparer<T>.Default, и использует эту реализацию, если она доступна.
Если она недоступна,Comparer<T>.Default проверяет, реализует ли тип T интерфейс IComparable. Если тип T не реализует эти интерфейсы,Comparer<T>.Default генерирует исключение InvalidOperationException.
9. Этот метод является операцией порядка сложности O(log n), где n — количество элементов в диапазоне.

Синтаксис

public int BinarySearch (T item, IComparer<T> comparer)

Пример:

В следующем примере кода демонстрируется перегрузка метода Sort(IComparer<T>) и перегрузка метода BinarySearch(T, IComparer<T>).

В примере определяется альтернативный компаратор для строк с именем DinoCompare, реализующий универсальный интерфейс IComparer<string> (IComparer(Of String) в Visual Basic, IComparer<String^> в Visual C++).Компаратор действует следующим образом: сначала сравниваемые операнды проверяются на равенство null, причем пустая ссылка считается меньшей, чем непустая.Затем сравниваются длины строк, и более длинная строка считается большей.Если длины совпадают, используется обычное сравнение строк.

Создается список строк List<T>, который заполняется четырьмя строками в произвольном порядке.Список выводится, сортируется с использованием альтернативного компаратора и затем выводится снова.

Затем используется перегрузка метода BinarySearch (T, IComparer<T>) для поиска нескольких строк, не включенных в список, с помощью альтернативного компаратора.Эти строки вставляются с использованием метода Insert.Эти два метода включены в состав функции SearchAndInsert вместе с кодом, выполняющим поразрядное дополнение (оператор ~ в C#) отрицательного числа, возвращаемого методом BinarySearch(T, IComparer<T>), и используют результат в качестве индекса для вставки новой строки

using System;
using System.Collections.Generic;
public class DinoComparer: IComparer<string>
{
    public int Compare(string x, string y)
    {
        if (x == null)
        {
            if (y == null)
            {
                // Если x == null и y == null, то они равны
                return 0;
            }
            else
            {
                // Если x == null и y != null, то у больше
                return -1;
            }
        }
        else
        {
            // Если x != null...
            //
            if (y == null)
                // ...и y == null, то x больше.
            {
                return 1;
            }
            else
            {
                // ...и y != null, сравниваем их длину
                //
                int retval = x.Length.CompareTo(y.Length);
                if (retval != 0)
                {
                    // Если их длины не равны,
                    // то более длинная строка больше.
                    //
                    return retval;
                }
                else
                {
                    // Если длины одинаковы,
                    // сравниваем строки базовым методом
                    // сравнения
                    return x.CompareTo(y);
                }
            }
        }
    }
}

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();
        dinosaurs.Add("Pachycephalosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");
        Display(dinosaurs);

        DinoComparer dc = new DinoComparer();

        Console.WriteLine("\nSort with alternate comparer:");
        dinosaurs.Sort(dc);
        Display(dinosaurs);

        SearchAndInsert(dinosaurs, "Coelophysis", dc);
        Display(dinosaurs);

        SearchAndInsert(dinosaurs, "Oviraptor", dc);
        Display(dinosaurs);

        SearchAndInsert(dinosaurs, "Tyrannosaur", dc);
        Display(dinosaurs);

        SearchAndInsert(dinosaurs, null, dc);
        Display(dinosaurs);
    }

    private static void SearchAndInsert(List<string> list,
        string insert, DinoComparer dc)
    {
        Console.WriteLine("\nПрименение бинарного поиска
        BinarySearch и вставка элемента  \"{0}\":", insert);
        int index = list.BinarySearch(insert, dc);
        if (index < 0)
        {
            list.Insert(~index, insert);
        }
    }
    private static void Display(List<string> list)
    {
        Console.WriteLine();
        foreach( string s in list )
        {
            Console.WriteLine(s);
        }
    }
}

/* Это пример работы вышенаписанной программы:

Pachycephalosaurus
Amargasaurus
Mamenchisaurus
Deinonychus

Сортировка сторонним (своим) шаблоном сравнения:

Deinonychus
Amargasaurus
Mamenchisaurus
Pachycephalosaurus

//Применение бинарного поиска BinarySearch и
//вставка элемента "Coelophysis":

Coelophysis
Deinonychus
Amargasaurus
Mamenchisaurus
Pachycephalosaurus

//Применение бинарного поиска BinarySearch и
//вставка элемента "Oviraptor":

Oviraptor
Coelophysis
Deinonychus
Amargasaurus
Mamenchisaurus
Pachycephalosaurus

//Применение бинарного поиска BinarySearch и
//вставка элемента "Tyrannosaur":

Oviraptor
Coelophysis
Deinonychus
Tyrannosaur
Amargasaurus
Mamenchisaurus
Pachycephalosaurus

Применение бинарного поиска BinarySearch и
//вставка элемента "":

Oviraptor
Coelophysis
Deinonychus
Tyrannosaur
Amargasaurus
Mamenchisaurus
Pachycephalosaurus
*/

Метод Clear()

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

Особенности и примечания:

1. Свойству Count присваивается значение 0, и из элементов коллекции удаляются ссылки на другие объекты.
2. Значение свойства Capacity не изменяется. Чтобы сбросить емкость списка List<T>, вызовите метод TrimExcess или задайте свойство Capacity непосредственно. При уменьшении емкости перераспределяется память и все элементы копируются в коллекцию List<T>. Усечение пустого списка List<T> устанавливает емкость List<T> равной значению по умолчанию.
3. Этот метод является операцией порядка сложности O(n), где n равно Count.

Синтаксис

public void Clear()

Пример:

В следующем примере кода демонстрируется метод Clear и ряд других свойств и методов универсального класса List<T>. В конце программы используется метод Clear для удаления всех элементов из списка, и затем вновь выводятся значения свойств Capacity и Count.

using System;
using System.Collections.Generic;
public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

        dinosaurs.Add("Tyrannosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Compsognathus");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);

        Console.WriteLine("\nContains(\"Deinonychus\"): {0}",
            dinosaurs.Contains("Deinonychus"));

        Console.WriteLine("\nInsert(2, \"Compsognathus\")");
        dinosaurs.Insert(2, "Compsognathus"); // вставляем во вторую позицию элемент "Compsognathus"

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);

        Console.WriteLine("\nRemove(\"Compsognathus\")");
        dinosaurs.Remove("Compsognathus"); // удаляем элемент "Compsognathus"

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        dinosaurs.TrimExcess(); // очищаем ёмкость списка
        Console.WriteLine("\nTrimExcess()");
        Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);

        dinosaurs.Clear(); // очищаем сам список
        Console.WriteLine("\nClear()");
        Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);
    }
}

/* This code example produces the following output:
Capacity: 0
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus
Capacity: 8
Count: 5
Contains("Deinonychus"): True
Insert(2, "Compsognathus")
Tyrannosaurus
Amargasaurus
Compsognathus
Mamenchisaurus
Deinonychus
Compsognathus
dinosaurs[3]: Mamenchisaurus
Remove("Compsognathus")
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus
TrimExcess()
Capacity: 5
Count: 5
Clear()
Capacity: 5
Count: 0
  */

Реклама

19 комментариев

  1. Again, he hears more unembellished questions from other football players, like, “Are there physical coins?” Or teammates disposition solicit from, “What is the difference between Tout savoir sur la crypto: cours du bitcoin en temps reel this and a stock? Or this and a bond?” According to Sherman: “Not any of us really grew up with financial literacy.” Because of this, in the good old days, a the whole kit of players have been captivated usefulness of by means of financial advisors.

  2. Доброго дня!
    Настало долгожданное лето и я подумал купить складной бассейн для дачи. Габариты бассейна: 3м в диаметре, высота: 75 см. Порекомендуйте на что нужно обратить внимание при покупке? Необходим ли песчаный фильтр или можно обойтись химией? Какие еще проблемы надо учесть?
    Заранее спасибо за мнения!
    Всем хорошего дня!

  3. Этой ночью разглядывал содержимое сети, вдруг к своему удивлению заметил отличный ресурс. Вот смотрите: dj-party.net . Для моих близких данный сайт оказал незабываемое впечатление. До встречи!

  4. original vhbw AKKU 14 4V 3000mAh fur DEWALT DC984KA DC984KB DC984VA ACCU Fein Eingang Metall Bohrsystem bis 25 mm KBH 25 S 1200 W 72710461000 BEPO Universal Fugenschneider UFS115N HW 660 Watt Ryobi ERH710RS SDS plus Bohrhammer Meisselhammer Kombihammer 710 Watt METABO Akkuschrauber Powermaxx BS Quick Basic SET 48 teilig Akku 2 0Ah BS12 AKKU 18V 3300mAh Ni MH fur Black&Decker GXC1000 HP188 HT518 KC1800SK KS1880S METABO Akkuschrauber BS18LTX BL Q I 7 0Ah METALOC Akku Bohrschrauber Quick Festool Druckluft IAS 3 light Schlauch 5000 AS 497213 5m Schlauch Ø 37mm Bosch Lochsagen Set Sanitar Multi Construction 6 teilig 20 64 mm MAKITA Winkelschleifer GA 9060 2200 Watt Zollernalb Kormoran EVO Deckenschleifer Langhalsschleifer Trockenbauschleifer Fischer Bohrer SDS Max IV 25 1200 1320 1 Stuck Dewalt Akku Schlagbohrschrauber 18V Schlagschrauber Li Ion DCD785N Solo FESTOOL Absaugmobil CTM 36 E AC LHS 574984 mit AUTOCLEAN fur Planex EASY AKKU NI MH 3000mAh 24V fur BOSCH BAT020 2607335192 2607335215 2607335216

    Akku Schlag Bohrschrauber SB 18 LT BL 4 0Ah Koffer Schlagschrauber Metabo Bosch Akku Handsauger 2V Professional 2 5AH Akku Ladegerat L Boxx Gr 1 METABO Multihammer UHEV2860 2Quick Set 45tlg SDS plus Bohrhammer Stemmhammer FESTOOL Absaugmobil CTL 26 E SD E A 574956 mit Steckdose Metabo 10 SDS plus Pro 4 Premium Hammerbohrer 12 0 x 210 mm FLEX CHE 5 45 SDS max Bohrhammer inkl 22mm Bohrer Metabo Winkelschleifer WEPBA 17 125 Quick 1700 Watt FLEX Basismotor Trinoxflex BME 14 3 L 1400W fur Satiniermaschine 433 403 ELEKTROTAUCHPUMPE ROSTFREI VX 15 50 ST HP 1 5 VOLT 380 PEDROLLO RYOBI Akku Bohrschrauber R12DD LL13S mit 2 x 1 3 Ah Lithium Akku in Tasche

    STANLEY 1 95 622Rollende Werkstatt Makita Akku Bohrschrauber DDF446RMJ FLEX 150mm Exzenterschleifer ORE 150 3 3mm Hub inkl Teller und Filter 379 441 FESTOOL VECTURO Oszillierer OS 400 EQ PLUS 563000 kompatibel zu FEIN SuperCut Metabo SDS plus Pro 4 Premium Hammerbohrer 14 0 x 600 mm Corona Diamant segment Diamantscheibe nass fcap ø 42 WORKDIAMOND fur Kern Bohrer METABO Bohrmaschine BE 10 600133810 Metallbohrdreher Bohrmaschine Makita Akku Schlagbohrschrauber Akkuschrauber Bohrschrauber 10 8V HP331DSAX3 Ryobi Akku Schlagbohrschrauber R18PDBL Akku 1 3Ah Ladegerat Garantie Makita Akku Reciprosage DJR183Y1J 18V 1 5 Ah Sabelsage DJR183 DJR185 DJR185RM1J

    FLUKE FLUKE 115 Metabo Flachkopf Winkelschleifer WEPF 9 125 Quick 910 Watt Bosch Saugbohrer SDS max 9 SpeedClean 18 x 400 x 620 mm Metabo Biegewelle BWS 01 Metabo Schrauber SE 6000 Schrauber Magazin SM 5 55 Fein 2 Gang Akku Bohrschrauber Profi Set ABS 18 QC Gewindebohren 71132263000 Akku Magazinschrauber SE18LTX6000 Trockenbauschrauber Schnellbauschrauber Metabo Metabo Akku Schlagschrauber SSW 18 LTX 600 2 Akkus 18V 4 0Ah Lader Koffer GESIPA Blindniet Setzgerat AccuBird 18 V im Koffer 2 1 Ah Li Ion Akku 18V fur Makita 1822 1823 1833 1834 1835 1835F 3000mAh

    MATRIX 18 2G 2 Li SCHRAUBER BOHRER 2 AKKUS BITS SCHLITZ KREUZ PZ BITSET METABO Akku Schlagschrauber SSW18LTX200 5 2Ah KOFFER 1 2 Zoll 210Nm Metabo SDS max Hammerbohrer 15 x 340 mm Bohrschrauber Batterie Perkussion DV18DBSL ah 5 NM 70 brushless hitachi Bosch Akkuschrauber GSR 10 8 2 LI 1x 2 0 Ah Akku Ladegerat AL1115CV i BOXX 72

  5. Уведомление: Buy Steroids USA

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s