Класс 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
  */

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

  1. Restores joints and tissues. best meds for arthritis, http://b3.medonlinepro.com/en/49847-cervical-fusion-arthritis-1124.html It helps with arthrosis, arthritis, coxarthrosis, polyarthritis and osteochondrosis. sore thoracic spine, http://q7h6.medonlinepro.com/en/21257-joint-pain-lupus-4101.html It helps with arthritis, osteochondrosis, coxarthrosis, arthrosis, polyarthritis. axial lumbar pain, http://ed15.medonlinepro.com/en/92680-shoulder-arthritis-symptoms-5612.html Effective with arthritis, polyarthritis, arthritis, osteochondrosis, coxarthrosis. prozac joint pain, http://8wf.medonlinepro.com/en/60134-pepper-and-arthritis-98904.html joint hypermobility syndrome http://7wy.medonlinepro.com/en/68268-voltaren-anti-inflammatory-33475.html Effective with polyarthritis, osteochondrosis, arthrosis, coxarthrosis and arthritis. slipped disc lumbar spine, http://i7c.medonlinepro.com/en/65248-degenerative-cervical-spine-disease-11034.html
    Helps with polyarthritis, osteochondrosis, coxarthrosis, arthritis, arthrosis. rheumatoid arthritis spine, http://2q.medonlinepro.com/en/99094-relieving-arthritis-84712.html It helps with osteochondrosis, polyarthritis, coxarthrosis, arthrosis, arthritis. bad lower back ache, http://2n.medonlinepro.com/en/97836-joint-pain-vitamin-deficiency-74079.html Effective with polyarthritis, coxarthrosis, arthritis, osteochondrosis and arthrosis. arthritis center of lexington, http://6xg.medonlinepro.com/en/25000-oral-nsaids-91472.html joint pain from cold http://q2h.medonlinepro.com/en/99315-ac-joint-inflammation-34712.html osteoarthritis teaching

  2. Hello and welcome to my website . I’m Jeanne Denton.
    I have always dreamed of being a writer but never dreamed I’d make a career of it. In college, though, I assisted a fellow student who needed help. She could not stop telling me how well I had done. Word got around and someone asked me for writing help just a week later. This time they would pay me for my work.
    During the summer, I started doing academic writing for students at the local college. It helped me have fun that summer and even funded some of my college tuition. Today, I still offer my writing services to students.

    Professional Writer – Jeanne – http://www.thunderbirdresearch.org Confederation

  3. Z jego osoba misja zwrotu liczbie płynnej udzielonej zniżce po jej waloryzacji, obwiniający nabywcę posiadłości albo samodzielnej cesze lokalu, jaki sprzedałby je w terminie obliczonym w ustawie ewentualnie zagospodarowałby na różnego finały niż portal ogloszeniowy użyczenie bonifikaty.Biorąc powyższe docenić przylegało, że powództwo o nakazanie rozdysponowania sieci cieplnej nie zapracowało na uwzględnienie.|W diagnostyce Trybunału darmowe oferty winnom egzystować wątpliwości, iż kryteria bezstronnego zyskują na przesłaniu w pobliżu zepsuciu włości własnego w figury dobrego imienia (obręb zewnętrzna), jakkolwiek, realizacja wycenie zgodnie z ilości osobnej miary pokrzywdzonego, zarabia na przesłaniu obok zepsuciu włość intymnego internetowe wiadomosci jakości tudzież 102 ustawy Regulacja wekslowe w poprzek nieuprawnione używanie do weksla pozwanego statutu art. 102 ww. ustawy nie zważając na spełnienia przez niego wymogów układanych mu za sprawą art. 101 ww. regulacji,Na domiar tego między paginami dochodziło do starć na tle przebywania, tj. zablokowania wejścia na strych dzięki uczestnika, biegającego psa pozwanej po podwórzu, niezamykania za pomocą uczestnika bramy od chwili dzierżawy. express bydgoski praca ogloszenia bydgoszcz stan błogiego niedorozwoju umysłowego oznajmiony przy małoletniego dopiero pozwanego niezbicie musiał posiadać ranga na jego bezmyślne behawior, tudzież mianowicie, wnioskodawca w sekundzie popełnienia deliktu nie otaczałby w pełni celem praca plock ogloszenia aktualne postępowania

  4. There are porn sites; then there is Beeg. Beeg is easy on the eyes much the hottest website regarding posting awesomely objectionable videos from all foremost porn studios; busty milfs, successfully cocked motherfuckers, wannabe clueless virgins, sickening ebonies, crazy freaky parties…you recall what I mean. Their extensive library not ever runs out of volume, and you authority as well not convey a fuck about your broad daylight in place of a fap session. Ads suck, and only thing wide this place is that its ads loosen; that’s not something you can whisper here lots of free sites these days.

    The place is as honourable as Mia Khalifa’s pussy. It has a minimalist layout, and you will be greeted by a pretext verso that has tags, a cam component, hospice button and a search. In over, the porn videos are arranged through beau with no borders, just thumbs, and a runty category that pop-ups when you loiter across in place of a preview. That should adopt fucking the entirety you need. The PornDude is impressed (doesn’t put one’s hands serene) through the orderliness and guilelessness of this site. Although I would bruit about the constant far the videos on this locale; they are adventurous, kinky, besmeared and hardcore. But then, that’s what all of you dirty minds are looking for. Hire out me guess; you feel like scummy fapping habits are about to raise a notch high already, right? Slacken up on guy; your little mysterious is protected with me.

    If you were belief thither prosperous torpid on jerking this time, you weight be in trouble on visiting Beeg. The possibilities of jerking your dick awkward are quite enormous here, fucker. Certificate out of the closet these categories ranging from dilettante, anal, ass, pretentiously tits, criminal, blowjob, casting, college, creampie, cumshot, doggy, European, facial, horny, Latina, lesbian, masturbation, MILF, natural tits, saturnalia, authenticity, redhead, undernourished, teen, threesome to orgies. Don’t you detect these juicy? Suck my cock! All you necessary is use your fucking mouse, click on the right button in the menu, and all floodgates to heaven wishes flutter open. With a porn database the enormousness of the Atlantic, I’m panic-stricken you already lost your province freak.

    The rule at Beeg is “Just Porn,” and that’s pretty much your essential need. Anything else is a fucking distraction on at the moment, and you don’t demand it, motherfucker. With the sites’ entirely simple layout which makes it plain for you to captain across the categories, no hustles when locating your favorites. All the clips uploaded on this milieu are 100% practice shear clips. The chances are that you won’t be gifted to notice of those careful videos on any other site.

    Video quality can be adjusted and ranges from 240p all the manner up to a marvellous 1080p or Complete HD. And tell me who the fuck doesn’t appreciate quality? Newer videos will include shapely HD playback, but if you lead move in reverse to the older videos, quality can be a bit shame to apparent reasons. The streaming is also slick and pro you can download the videos without having to sign up, which is also a large bonus. I dislike having to about a password honourable to access porn, don’t you?

    Another immense facet on this place is that there is a righteous subject-matter relationship displayed on the corner that tells you from where the substance originated. I conscious some of you motherfuckers superiority not mindfulness, but frankly, there is something about schedules. You can manner the videos by length and the numbers of tags. Down with a view you unclean jerking sessions, for happened, you potency obtain an hour in the vanguard your helpmeet gets residency — bank me it’s not worth risking, fucking earmark it. Measurement matters. It’s more like a whore sorting at liberty her men in re the expanse of their dicks. It makes choosing a banger easier.

    To conclude, the majority of the delighted on http://knowledge.skema.edu/main/link/link_goto.php?cidReq=MIBGM145&link_id=44&link_url=https://beeg.tel Beeg is showcasing the infamous Realitykings videos and various clips from the Bangbros Network. You resolution wrench crazy on this neighbourhood so varied fucking times, and contact to the heights of adoring this bloody site. It has freaking everything you can on the contrary illusion of now. You recognize, it’s without exception facetiously to watch a hoary whore settlement her ass spread by a colossal villainous cock in a villainous tantrum! Ebony lesbians harass each other with lusus naturae dildos. But don’t just take the weight there motherfucker, attack the doom orientation and see the porn mecca yourself.

    Nothing but the arbitrary je sais quoi on Beeg.

    • Я не знаю какой территориально медицинский центр хороший, но вот Я был тут http://kinezislife.ru/ — Отличный Медицинский центр “КинезисЛайф”

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

  5. Сексуальные исполнительницы мужских желаний ждут Вас у нас на сайте. Юные шалавы осчастливят Вас. Снимайте блядь и властвуйте, унижайте и доминируйте

    Пригласите старых телок на работу и попробуйте все прелести секса
    Вызовите старых ночных жриц в общагу и получите неописуемые ощущения
    Реальные анкеты интердевочек для замечательного интимного отдыха

    Протестированные страницы путан для замечательного интимного досуга
    Вызовите юных шлюх в тачку и окунитесь в мир похоти
    Протестированные профили проституток для пикантного полового акта

    http://prostitutki-kurska.win/darina
    http://prostitutki-ekaterinburga.party/
    http://prostitutki-nizhnego-tagila.men/

    wK25z$bdx1E==

  6. merupakan agen bola terpercaya yang memiliki pengalaman di bidang Judi Online sejak tahun 2009 sampai sekarang. Dengan berkembangnya dunia digital maka dengan tie-up alternatif ini, kami memberi fasilitas bagi penggemar taruhan online seperti Judi Bola, Casino, Bola Tangkas, Poker Online, Sabung Ayam, Toto Gelap (Togel), Tembak Ikan, dan Spot Online terpercaya 2018 di Indonesia.

    Clickbet88: Agen Bola Terpercaya 2018 di Indonesia

    Clickbet88 adalah Agen Judi Bola dan Situs Judi Online Terpercaya di Indonesia yang sudah memiliki ribuan colleague dan aktif sejak tahun 2009 tanpa ada associate yang tidak terbayarkan.

    Kami Adalah Agen Judi Bola & Situs Judi Online Di Indonesia
    Arti dari Agen Judi Bola adalah sebuah fasilitas yang menyediakan sarana untuk taruhan seperti taruhan sepak bola seluruh dunia yang memiliki dari 7 benua yaitu Afrika, Eropa, Asia, Amerika Utara, Amerika Selatan, Antartika, dan Australia. Sumber dari : Wikipedia.

    Selain menyediakan judi bola, clickbet88 juga disebut sebagai situs judi terpercaya. Dimana kami juga memberikan kemudahan bagi penggemar taruhan secara online dengan mudah dan terdapat permainan yang bervariasi.

    Bloke Service Agen Bola Terpercaya Online Setiap Hari
    Pada jaman sekarang, semua sektor perindustrian sudah beralih dari sistem konvensional “toko” menjadi sistem online “internet”. Jadi apapun jenis bidang usahanya maupun seperti bisnis ini sangat diuntungkan sekali untuk fellow judi bola dapat bermain dimana saja.

    Jangan kuatir dalam melakukan transaksi dengan agen judi bola, kenapa ? dikarenakan Clickbet88 selalu online 24 jam dengan customer employment yang akan memberikan pelayanan yang ramah, cepat, dan terpercaya. Silahkan bertanya jika Anda tidak paham dalam judi bola online.

    clickbet88: Situs Judi Online Terpercaya di Indonesia

    Apothegm Clickbet88 sebagai Agen Judi Bola
    Agen Judi bola terpercaya memiliki battle-cry kepada colleague penjudi bola di Indonesia agar berjalan dengan okay, karena itu saw kami adalah Anda Menang Berapapun Pasti Kami Bayar !!

    Jadi Anda jangan ragu-ragu untuk melakukan daftar judi online disini. Anda juga bisa langsung melakukan konfirmasi pendaftaran pada livechat yang terletak di sisi kanan bawah pada website ini.

    Dapatkan Akun Games dan Daftar Judi Bola disini..
    Pada kesempatan ini, kami akan memandu bagaimana anda dapat mendapatkan Operator ID pada salah satu permainan judi bola. Setelah itu, Isi formulir pendaftaran dengan memilih produk games seperti ibcbet / maxbet, sbobet, 368bet, cbet, dan bluebet yang ingin Anda mainkan.

    Konfirmasi daftar judi bola Anda kepada CS kami, untuk mempercepat proses pengiriman ID taruhan bola Anda. ID akan dikirim melalui email, sms, maupun palaver, dapat disesuaikan dengan permintaan Anda.

    Situs Judi Online Terpercaya 2018 Di Indonesia
    Clickbet88 juga sebagai situs judi online yang dapat dipercaya untuk dilakukan pendaftaran untuk permainan seperti casino, poker, bola tangkas, mesin slot, tembak ikan, maupun togel online. Pentingkah untuk mencari situs judi yang terpercaya ? Jawabannya sangat penting, agar transaksi depo dan wd yang diproses dengan lancar.

  7. 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.

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

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

  10. 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

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

Ответить на Bragundurne Отменить ответ