Чтение онлайн

ЖАНРЫ

C# 4.0 полное руководство - 2011

Шилдт Герберт

Шрифт:

}

}

Эта версия программы дает такой же результат, как и предыдущая.

Исходное количество элементов: О

Добавить 6 элементов Количество элементов: 6 Текущее содержимое: С А Е В D F

Удалить 2 элемента Количество элементов: 4 Содержимое: С Е В D

Добавить еще 20 элементов Текущая емкость: 32

Количество элементов после добавления 20 новых: 24 Содержимое: CEBDabcdefghij klmnopqrst

Изменить три первых элемента

Содержимое: XYZDabcdefghij klmnopqrst

Класс LinkedList<T>

В классе LinkedList<T> создается

коллекция в виде обобщенного двунаправленного списка. В этом классе реализуются интерфейсы
ICollection, ICollection<T>, IEnumerable, IEnumerable<T>, ISerializable иIDeserializationCallback. В двух последних интерфейсах поддерживается сериализация списка. В классе LinkedList<T> определяются два приведенных ниже открытых конструктора.

public LinkedListO

public LinkedList(IEnumerable<T> collection)

В первом конструкторе создается пустой связный список, а во втором конструкторе — список, инициализируемый элементами из коллекции collection.

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

public LinkedListNode<T> Next { get; } public LinkedListNode<T> Previous { get; } public LinkedList<T> List { get; } public T Value { get; set; }

С помощью свойств Next и Previous получаются ссылки на предыдущий и последующий узлы списка соответственно, что дает возможность обходить список в обоих направлениях. Если же предыдущий или последующий узел отсутствует, то возвращается пустая ссылка. Для получения ссылки на сам список служит свойство List. А с помощью свойства Value можно устанавливать и получать значение, находящееся в узле списка.

В классе LinkedList<T> определяется немало методов. В табл. 25.16 приведены наиболее часто используемые методы данного класса. Кроме того, в классе LinkedList<T> определяются собственные свойства, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Эти свойства приведены ниже.

public LinkedListNode<T> First { get; } public LinkedListNode<T> Last { get; }

С помощью свойства First получается первый узел в списке, а с помощью свойства Last — последний узел в списке.

Таблица 25.16. Наиболее часто используемые методы, определенные в классе LinkedList<T>

Метод

Описание

public LinkedListNode<T>

Добавляет в список узел со значением value не

AddAfter(LinkedListNode<T>

посредственно после указанного

узла node. Указы

node, T value)

ваемый узел node не должен быть пустым (null). Метод возвращает ссылку на узел, содержащий значение value

public void

Добавляет в список новый узел newNode непо

AddAfter(LinkedListNode<T>

средственно после указанного узла node. Ука

node, LinkedListNode<T>

зываемый узел node не должен быть пустым

newNode)

(null). Если узел node отсутствует в списке или если новый узел newNode является частью другого списка, то* генерируется исключение

InvalidOperationException

public LinkedListNode<T>

Добавляет в список узел со значением value непо

AddBefore(LinkedListNode<T>

средственно перед указанным узлом node. Указы

node, T value)

ваемый узел node не должен быть пустым (null). Метод возвращает ссылку на узел, содержащий значение value

Окончание табл. 25.16

Метод

Описание

public void

Добавляет в список новый узел newNode не

AddBefore(LinkedListNode<T>

посредственно перед указанным узлом node.

node, LinkedListNode<T>

Указываемый узел node не должен быть пу

newNode)

стым (null). Если узел node отсутствует в списке или если новый узел newNode является частью другого списка, то генерируется исключение

InvalidOperationException

public LinkedList<T>

Добавляет узел со значением value в начало спи

AddFirst(T value)

Поделиться с друзьями: