программирование. Руководство su P# a n Reference в herbert schildt полное руководство с 0 герберт шилдт
Скачать 3.32 Mb.
|
public void Add (TKey key, Добавляет в список пару “ключ‑значение", TValue value) определяемую параметрами key и value. Если ключ key уже находится в списке, то его значение не изменяется, и генерируется исключение ArgumentException public bool ContainsKey (ТК key) Возвращает логическое значение true, если вы зывающий список содержит объект key в каче‑_стве ключа; а иначе – логическое значение false Метод Описание public bool ContainsValue(TValue value) public IEnumerator public int IndexOfValue(TValue value) public bool Remove(TKey key) public void RemoveAt(int index) public void TrimExcessO Возвращает логическое значение true, если вызывающий список содержит значение value ; в противном случае – логическое значение false Возвращает перечислитель для вызывающего словаря Возвращает индекс ключа key. Если искомый ключ не обнаружен в списке, возвращается значение ‑1 Возвращает индекс первого вхождения значения value в вызывающем списке. Если искомое значение не обнаружено в списке, возвращается значение ‑1 Удаляет из списка пару “ключ‑значение” по указанному ключу key. При удачном исходе операции возвращается логическое значение true, а если ключ key отсутствует в списке – логическое значение false Удаляет из списка пару “ключ‑значение” по указанному индексу index Сокращает избыточную емкость вызывающей коллекции в виде отсортированного списка Кроме того, в классе SortedList Свойство Описание public int Capacity { get; set; } Получает или устанавливает емкость вызывающей коллекции в виде отсо ртированного списка public IComparer ■ } Получает метод сравнения для вызы вающего списка public IList Получает коллекцию ключей public IList Получает коллекцию значений И наконец, в классе SortedList TValue> реализуется приведенный ниже индексатор, определенный в интерфейсе IDictionaryCTKey, TValueX public TValue this[TKey key ] { get; set; } . Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента. Но в данном случае в качестве индекса служит ключ элемента, а не сам индекс. В приведенном ниже примере демонстрируется применение класса SortedList ранее примера базы данных работников. В данном варианте база данных хранится в коллекции типа SortedList. // Продемонстрировать применение класса обобщенной // коллекции SortedList using System; using System.Collections.Generic; class GenSLDemo { static void Main() { // Создать коллекцию в виде отсортированного списка // для хранения имен и фамилий работников и их зарплаты. SortedList new SortedList // Добавить элементы в коллекцию, si.Add("Батлер, Джон", 73000); si.Add("Шварц, Capa", 59000); si.Add("Пайк, Томас", 45000); si.Add("Фрэнк, Эд", 99000); // Получить коллекцию ключей, т.е. фамилий и имен. ICollection // Использовать ключи для получения значений, т.е. зарплаты, foreach(string str in с) Console.WriteLine("{0}, зарплата: {1:C}", str, si[str]); Console.WriteLine(); } } Ниже приведен результат выполнения этой программы. Батлер, Джон, зарплата: $73,000.00 Пайк, Томас, зарплата: $45,000.00 Фрэнк, Эд, зарплата: $99,000.00 Шварц, Сара, зарплата: $59,000.00 Как видите, список работников и их зарплаты отсортированы по ключу, в качестве которого в данном случае служит фамилия и имя работника. Класс Stack Класс Stack public Stack() public Stack(int capacity) public Stack(IEnumerable В первой форме конструктора создается пустой стек с выбираемой по умолчанию первоначальной емкостью, а во второй форме – пустой стек, первоначальный размер которого определяет параметр capaci ty. И в третьей форме создается стек, содержащий элементы коллекции, определяемой параметром collection. Его первоначальная емкость равна количеству указанных элементов. В классе Stack Таблица 25.20. Методы, определенные в классе Stack Метод Описание public T Peek() Возвращает элемент, находящийся на вершине стека, но не удаляет его public T Pop() Возвращает элемент, находящийся на вершине стека, удаляя его в процессе работы public void Push(T item) Помещает элемент i tern в стек public T[] ToArrayO Возвращает массив, содержащий копии элементов вызывающего стека public void TrimExcessO Сокращает избыточную емкость вызывающей коллекции в виде стека В приведенном ниже примере программы демонстрируется применение класса Stack // Продемонстрировать применение класса Stack using System.Collections.Generic; class GenStackDemo { static void Main() { Stack st.Push("один"); st.Push("два"); st.Push("три"); st.Push("четыре"); st.Push("пять"); while(st.Count > 0) { string str = st.Pop(); Console.Write(str + " "); } Console.WriteLine (); ' } } При выполнении этой программы получается следующий результат. пять четыре три два один Класс Queue Класс Queue public Queue() public Queue(int capacity) public Queue(IEnumerable В первой форме конструктора создается пустая очередь с выбираемой по умолчанию первоначальной емкостью, а во второй форме – пустая очередь, первоначальный размер которой определяет параметр capaci ty. И в третьей форме создается очередь, содержащая элементы коллекции, определяемой параметром collection. Ее первоначальная емкость равна количеству указанных элементов. В классе Queue Таблица 25.21. Методы, определенные в классе Queue Метод Описание public т Dequeue () Возвращает объект из начала вызывающей очереди. Возвращаемый объект удаляется из очереди public void Enqueue (Т item) Добавляет элемент i tern в конец очереди public т Реек () Возвращает элемент из начала вызывающей очере‑ _ди, но не удаляет его_ Метод Описание public virtual Т[] ToArray() public void TrimExcess() Возвращает массив, который содержит копии элементов из вызывающей очереди Сокращает избыточную емкость вызывающей коллекции в виде очереди В приведенном ниже примере демонстрируется применение класса Queue // Продемонстрировать применение класса Queue using System.Collections.Generic; class GenQueueDemo { static void Main() { Queue q.Enqueue(98.6); q.Enqueue(212.0); q.Enqueue(32.0); q.Enqueue(3.1416); double sum = 0.0; Console.Write("Очередь содержит: "); while(q.Count > 0) { double val = q. Dequeue (); Console.Write(val + " "); sum += val;. } Console.WriteLine("ХпИтоговая сумма равна " +• sum); } } Вот к какому результату приводит выполнение этой программы. Очередь содержит: 98.6 212 32 3.1416 Итоговая сумма равна 345.7416 Класс HashSet В классе HashSet HashSet Ниже перечислены наиболее употребительные конструкторы, определенные в классе HashSet public ‑HashSetO public HashSet(IEnumerable public HashSet(IEnumerable В первой форме конструктора создается пустое множество, а во второй форме – множество, состоящее из элементов указываемой коллекции collection. В третьей форме конструктора допускается указывать способ сравнения с помощью параметра comparer. А в четвертой форме создается множество, состоящее из элементов указываемой коллекции collection , и используется заданный способ сравнения comparer. Имеется также пятая форма конструктора данного класса, в которой допускается инициализировать множество последовательно упорядоченными данными. В классе HashSet Помимо свойств, определенных в интерфейсах, которые реализуются в классе HashSet public IEqualityComparer Оно позволяет получать метод сравнения для вызывающего хеш‑множества. Ниже приведен конкретный пример применения класса HashSet // Продемонстрировать применение класса HashSet using System.Collections.Generic; class HashSetDemo { static void Show(string msg, HashSet Console.Write(msg); foreach(char ch in set) Console.Write(ch + " "); Console.WriteLine (); } static void Main() { HashSet HashSet setA.Add('A'); setA.Add(' В'); setA.Add('C') ; setB.Add('С') ; setB.Add(' D1 ); setB.Add('Е'); Show("Исходное содержимое множества setA: ", setA); Show("Исходное содержимое множества setB: ", setB); setA.SymmetricExceptWith(setB); Show("Содержимое множества setA после " + "разноименности со множеством SetB: ", setA); setA.UnionWith(setB); Show("Содержимое множества setA после " + "объединения со множеством SetB: ", setA); setA.ExceptWith(setB); Show("Содержимое множества setA после " + "вычитания из множества setB: ", setA); Console.WriteLine(); } } Ниже приведен результат выполнения программы из данного примера. Исходное содержимое множества setA: ABC Исходное содержимое множества setB: С D Е Содержимое множества setA после разноименности со множеством SetB: А В D Е Содержимое множества setA после объединения со множеством SetB: А В D Е С Содержимое множества setA после вычитания из множества setB: А В Класс SortedSet Класс SortedSet |