КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Типы коллекций
Много общих коллекций предоставляются платформой.NET Framework. Каждый тип коллекции предназначен для особой целью. Следующие группы в составе классы коллекций, описанных в этом разделе: · Классы System.Collections.Generic · Классы System.Collections.Concurrent · Классы System.Collections · Класс Collection Visual Basic Можно создать родовая коллекцию с помощью одного из классов в пространстве имен System.Collections.Generic. Универсальная коллекция применяется в том случае, если все элементы в коллекции имеют одинаковый тип данных. Родовая коллекция принудительно строгая типизация, включив только необходимый тип данных для добавления. В следующей таблице перечислены некоторые из часто используемых классов пространства имен System.Collections.Generic: Дополнительные сведения см. в описаниях Часто используемые типы коллекций, Выбор класса коллекции и System.Collections.Generic. Классы System.Collections.Concurrent В платформе.NET Framework 4 коллекций в пространстве имен System.Collections.Concurrent предоставляют эффективные потокобезопасные операции для доступа к элементам коллекции из нескольких потоков. Классы в пространстве имен System.Collections.Concurrent должны использоваться вместо соответствующих типов в System.Collections.Generic и пространства имен System.Collections, когда несколько потоков обращаются к коллекции одновременно. Дополнительные сведения см. в разделах Потокобезопасные коллекции и System.Collections.Concurrent. Некоторые классы, включенные в пространстве имен System.Collections.ConcurrentBlockingCollection<T>, ConcurrentDictionary<TKey, TValue>, ConcurrentQueue<T> и ConcurrentStack<T>. Классы System.Collections Классы в пространстве имен System.Collections не хранят элементы в виде конкретно типизированных объектов, а хранят их как объекты типа Object. При возможности следует использовать родовые коллекций в пространстве имен System.Collections.Generic или пространстве имен System.Collections.Concurrent вместо устаревших типов в пространстве имен System.Collections. В следующей таблице перечислены некоторые из часто используемых классов в пространстве имен System.Collections: Пространство имен System.Collections.Specialized предоставляет специализированные строго типизированные классы коллекций, такие как коллекции строк, связанные списки и гибридные словари. Реализация коллекцию клавиши " ключ-значение " Коллекция Dictionary<TKey, TValue> родовая позволяет получить доступ к элементам коллекции с помощью клавиши каждого элемента. Каждый элемент, добавляемый словарь, состоит из значения и связанного с ним ключа. Извлечение значения с помощью его клавиши быстрого поскольку класс Dictionary реализован как хэш-таблицы. В следующем примере создается коллекция Dictionary и последовательно перебирает словарь с помощью выписки For Each. private void IterateThruDictionary() { Dictionary<string, Element> elements = BuildDictionary(); foreach (KeyValuePair<string, Element> kvp in elements) { Element theElement = kvp.Value; Console.WriteLine("key: " + kvp.Key); Console.WriteLine("values: " + theElement.Symbol + " " + theElement.Name + " " + theElement.AtomicNumber); } } private Dictionary<string, Element> BuildDictionary() { var elements = new Dictionary<string, Element>(); AddToDictionary(elements, "K", "Potassium", 19); AddToDictionary(elements, "Ca", "Calcium", 20); AddToDictionary(elements, "Sc", "Scandium", 21); AddToDictionary(elements, "Ti", "Titanium", 22); return elements; } private void AddToDictionary(Dictionary<string, Element> elements, string symbol, string name, int atomicNumber) { Element theElement = new Element(); theElement.Symbol = symbol; theElement.Name = name; theElement.AtomicNumber = atomicNumber; elements.Add(key: theElement.Symbol, value: theElement); } public class Element { public string Symbol { get; set; } public string Name { get; set; } public int AtomicNumber { get; set; } } Вместо того, чтобы использовать инициализатор набора для построения коллекцию Dictionary, можно заменить методы BuildDictionary и AddToDictionary следующим приемом. private Dictionary<string, Element> BuildDictionary2() { return new Dictionary<string, Element> { {"K", new Element() { Symbol="K", Name="Potassium", AtomicNumber=19}}, {"Ca", new Element() { Symbol="Ca", Name="Calcium", AtomicNumber=20}}, {"Sc", new Element() { Symbol="Sc", Name="Scandium", AtomicNumber=21}}, {"Ti", new Element() { Symbol="Ti", Name="Titanium", AtomicNumber=22}} }; } В следующем примере используется метод ContainsKey, а свойство ItemDictionary, чтобы быстро найти элемент клавиша. Свойство Item позволяет получить доступ к элементу в коллекции elements с помощью кода elements(symbol) в Visual Basic или в C# elements[symbol]. private void FindInDictionary(string symbol) { Dictionary<string, Element> elements = BuildDictionary(); if (elements.ContainsKey(symbol) == false) { Console.WriteLine(symbol + " not found"); } else { Element theElement = elements[symbol]; Console.WriteLine("found: " + theElement.Name); } } В следующем примере рекомендуется использовать метод TryGetValue клавиша быстрого находит элемент. private void FindInDictionary2(string symbol) { Dictionary<string, Element> elements = BuildDictionary(); Element theElement = null; if (elements.TryGetValue(symbol, out theElement) == false) Console.WriteLine(symbol + " not found"); else Console.WriteLine("found: " + theElement.Name); }
Дата добавления: 2014-01-14; Просмотров: 438; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |