Герберт Шилдт - C# 4.0: полное руководство
- Название:C# 4.0: полное руководство
- Автор:
- Жанр:
- Издательство:ООО И.Д. Вильямс
- Год:2011
- Город:Москва -- Киев
- ISBN:978-5-8459-1684-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Герберт Шилдт - C# 4.0: полное руководство краткое содержание
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию
C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Нужно, однако, иметь в виду, что сохранение порядка следования элементов в коллекции типа Hashtable
не гарантируется. Дело в том, что процесс хеширования оказывается, как правило, непригодным для создания отсортированных таблиц.
Ниже приведен пример программы, в которой демонстрируется применение класса Hashtable
.
// Продемонстрировать применение класса Hashtable.
using System;
using System.Collections;
class HashtableDemo {
static void Main() {
// Создать хеш-таблицу.
Hashtable ht = new Hashtable();
// Добавить элементы в таблицу.
ht.Add("здание", "жилое помещение");
ht.Add("автомашина", "транспортное средство");
ht.Add("книга", "набор печатных слов");
ht.Add("яблоко", "съедобный плод");
// Добавить элементы с помощью индексатора,
ht["трактор"] = "сельскохозяйственная машина";
// Получить коллекцию ключей.
ICollection с = ht.Keys;
// Использовать ключи для получения значений,
foreach(string str in с)
Console.WriteLine(str + ": " + ht[str]);
}
}
Выполнение этой программы приводит к следующему результату.
здание: жилое помещение
книга: набор печатных слов
трактор: сельскохозяйственная машина
автомашина: транспортное средство
яблоко: съедобный плод
Как следует из приведенного выше результата, пары "ключ-значение" сохраняются в произвольном порядке. Обратите внимание на то, как получено и отображено содержимое хеш-таблицы ht. Сначала была получена коллекция ключей с помощью свойства Keys
. Затем каждый ключ был использован для индексирования хеш-таблицы ht с целью извлечь из нее значение, соответствующее заданному ключу. Напомним, что в качестве индекса в данном случае использовался индексатор, определенный в интерфейсе IDictionary
и реализованный в классе Hashtable
.
Класс SortedList
предназначен для создания коллекции, в которой пары "ключ-значение" хранятся в порядке, отсортированном по значению ключей. В классе SortedList
реализуются интерфейсы IDictionary, ICollection, IEnumerable
и ICloneable
.
В классе SortedList
определено несколько конструкторов, включая следующие.
public SortedList()
public SortedList(IDictionary d)
public SortedList(int initialCapacity)
public SortedList(IComparer comparer)
В первом конструкторе создается пустая коллекция, первоначальная емкость которой равна нулю. Во втором конструкторе создается пустая коллекция типа SortedList
, которая инициализируется элементами из коллекции d. Ее первоначальная емкость равна количеству указанных элементов. В третьем конструкторе создается пустая коллекция типа SortedList
, первоначальный размер которой определяет емкость, задаваемая параметром initialCapacity. Эта емкость соответствует размеру базового массива, используемого для хранения элементов коллекции. И в четвертой форме конструктора с помощью параметра сотпрагег указывается способ, используемый для сравнения объектов по списку. В этой форме создается пустая коллекция, первоначальная емкость которой равна нулю.
При добавлении новых элементов в список емкость коллекции типа SortedList
увеличивается автоматически по мере надобности. Так, если текущая емкость коллекции превышается, то она соответственно увеличивается. Преимущество указания емкости коллекции типа SortedList
при ее создании заключается в снижении или полном исключении издержек на изменение размера коллекции. Разумеется, указывать емкость коллекции целесообразно лишь в том случае, если заранее известно, сколько элементов требуется хранить в ней.
В классе SortedList
определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса перечислены в табл. 25.6. Так, если требуется определить, содержится ли ключ в коллекции типа SortedList
, вызывается метод ContainsKey()
. А если требуется выяснить, хранится ли конкретное значение в коллекции типа SortedList
, вызывается метод ContainsValue()
. Для перечисления содержимого коллекции типа SortedList
служит метод GetEnumerator()
, возвращающий объект типа IDictionaryEnumerator
. Напомним, что IDictionaryEnumerator
— это перечислитель, используемый для перечисления содержимого коллекции, в которой хранятся пары "ключ-значение". И наконец, для получения синхронизированной оболочки, в которую заключается коллекция типа SortedList
, вызывается метод Synchronized()
.
Таблица 25.6. Наиболее часто используемые методы, определенные в классе SortedList
Метод - Описание
public virtual bool ContainsKey(object key) - Возвращает логическое значение true,если в вызывающей коллекции типа SortedListсодержится ключ key ,а иначе — логическое значение false
public virtual bool ContainsValue(object value) - Возвращает логическое значение true,если в вызывающей коллекции типа SortedListсодержится значение value , а иначе — логическое значение false
public virtual object GetBylndex(int index) - Возвращает значение, указываемое по индексу index
public virtual IDictionaryEnumerator GetEnumerator() -Возвращает для вызывающей коллекции типа SortedListперечислитель типа IDictionaryEnumerator
public virtual object GetKey(int index) - Возвращает значение ключа, указываемое по индексу index
public virtual IList GetKeyList() -Возвращает коллекцию типа SortedListс ключами, хранящимися в вызывающей коллекции типа SortedList
public virtual IList GetValueList() -Возвращает коллекцию типа SortedListсо значениями, хранящимися в вызывающей коллекции типа SortedList
public virtual int IndexOfKey(object key) - Возвращает индекс ключа key. Если искомый ключ не обнаружен, возвращается значение -1
public virtual int IndexOfValue(object value) - Возвращает индекс первого вхождения значения value в вызывающей коллекции. Если искомое значение не обнаружено, возвращается значение -1
public virtual void SetBylndex(int index, object value) - Устанавливает значение по индексу index равным значению value
public static SortedList Synchronized(SortedList list) - Возвращает синхронизированный вариант коллекции типа SortedList,передаваемой в качестве параметра list
public virtual void TrimToSize() -Устанавливает значение свойства Capacityравным значению свойства Count
Читать дальшеИнтервал:
Закладка: