Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 22702|Відповідь: 0

[Джерело] Існує кілька типів збірок для колекцій у C#

[Копіювати посилання]
Опубліковано 11.11.2014 08:44:59 | | |
Колекція, яка представляє набір об'єктів, до яких можна отримати доступ, проходячи кожен елемент (зокрема, до неї можна отримати доступ за допомогою foreach циклу)
Колекція містить кілька елементів, тобто існує об'єкт класу колекції та N елементних об'єктів

Оскільки будь-який клас колекції реалізує інтерфейс IEnumerable, будь-який об'єкт класу колекції має метод GetEnumerator(), який може повертати об'єкт, що реалізує інтерфейс IEnumerator, що не є ні об'єктом класу колекції, ні об'єктом класу елементів колекції, він є незалежним класовим об'єктом. Цей об'єкт дозволяє ітерувати кожен елемент у об'єкті класу колекції

Якщо клас колекції є користувацьким класом колекції, користувач повинен реалізувати його метод GetEnumerator(), інакше цикли не можуть використовуватися. Звісно, клас IEnumerator, що відповідає цьому класу кастомної колекції (класу, що реалізує інтерфейс), також має бути налаштований

Наприклад, IEnumerator, що відповідає класу колекції ArrayList, — це ArrayListEnumeratorSimple
            IEnumerator, що відповідає класу колекції масивів, — це SZArrayEnumerator
      (Жоден із цих класів не охоплений у документації бібліотеки класів .NET Framework (MSDN))

1. Інтерфейси в System.Colloctions, які відображають поведінку колекції, такі:
1) ICollection
Визначте розмір, кількість enums і методи синхронізації для всіх колекцій. Походить від IEnumerable
Він визначає найосновнішу поведінку класу колекції, і всі класи колекції реалізують цей інтерфейс (базовий інтерфейс)
Але його поведінка надто проста: це переважно властивість Count, і не має сенсу реалізовувати її самостійно

2)IEnumerable
Вивести перерахування, яке підтримує прості ітерації на множині
Він має лише один метод — GetEnumerator(), який повертає інтерфейс IEnumerator, через який можна обходити колекцію
Фактично всі класи колекцій реалізують цей інтерфейс

3) IList
Реалізація IList — це сукупність значень, які можна сортувати і доступні за індексом для своїх елементів, а сама вона реалізує інтерфейси ICollection та IEnumerable
є абстрактним базовим класом для всіх списків. Існує три категорії реалізацій IList: лише для читання, фіксованого розміру та змінного розміру.

4) Ідентифікаторний
Реалізація IDictionary — це сукупність пар ключ/значення, яка сама реалізує інтерфейси ICollection та IEnumerable
є базовим інтерфейсом колекції пар ключ/значення. Існує три категорії реалізацій IDictionary: лише для читання, фіксованого розміру та змінного розміру.
IDictionary можна назвати словником, картою або shash списком, і він отримує доступ до значень на основі ключів (будь-якого типу).

2. Класи колекцій, які можна безпосередньо використовувати в System.Collections, такі:
1)ArrayList
Реалізувати інтерфейси: IList, ICollection, IEnumerable
Поки колекція не змінюється, ArrayList може безпечно підтримувати кілька читачів одночасно
Коли елементи додаються до ArrayList, ємність автоматично збільшується за потребою шляхом перерозподілу (у 2 рази)
Якщо потрібно створити масив об'єктів, але ви не знаєте його розмір заздалегідь, можна скористатися ArrayList
ArrayList називає всі елементи об'єктами, тому його потрібно вводити при зверненні до елементів у ArrayList
Переваги: Динамічне змінювання розміру, гнучке та зручне вставлення та видалення елементів, сортування
Недоліки: Продуктивність вставки гірша, ніж масиви, не сильні типи

2)BitArray
Реалізувати інтерфейси: ICollection та IEnumerable
Керуйте стисненими масивами бітових значень.

3) Хеш-таблиця
Реалізувати інтерфейси: IDictionary, ICollection, IEnumerable
Ви можете вільно додавати та видаляти елементи до Hashtable, деякі з них як-от ArrayList, але без надмірних витрат продуктивності

4) SortedList
Реалізувати інтерфейси: IDictionary, ICollection, IEnumerable
SortedLIst поєднує переваги ArrayList і Hashtable і може бути відсортований за значенням ключа

5) Черга
Реалізувати інтерфейси: ICollection та IEnumerable
Queques — це черги, перший прийшов, перший вийшов доступ до окремих елементів
Ви можете викликати метод GetEnumerator() об'єкта Queque, щоб об'єкт IEnumerator проходив через елементи в черзі

6) Стек
Реалізувати інтерфейси: ICollection та IEnumerable
Стек — це стек, який отримує доступ до окремих елементів за принципом «останній прийшов — перший-вихід»
Ви можете викликати метод GetEnumerator() об'єкта Stack, щоб об'єкт IEnumerator пройшов ітературу через елементи стеку

3. Наведені вище класи колекції є загальними класами колекції, і більшість елементів, які вони приймають, належать до типу Об'єкта, коли об'єкт вставляється у
Після збірки оригінальна інформація про типи втрачається — тобто ці загальні класи колекції не сильно типізовані
Обхідним шляхом є використання сильно типізованих класів колекції
Простір назв System.Collections
System.Collections.Specialized простір назв Деякі класи можуть відповідати вимогам і можуть використовуватися безпосередньо або успадковуватися





Попередній:Відкритий лист до більшості придурків напередодні Дня одинаків
Наступний:C# Generic Range Rover (поворот)
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com