Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство_по_C++_CLI.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
8.1 Mб
Скачать

36.Встроенные интерфейсы коллекций

36.1 Обзор интерфейсов коллекций

36.1.1 Вступление

В предыдущем уроке мы увидели, как создать класс коллекции, которая может быть перечислена. Это должно было заложить основу для более широкого набора классов коллекций, доступных в .NET Framework. В следующем уроке мы рассмотрим некоторые из классов коллекций, которые можно использовать в вашем проекте. Эти классы были созданы для программистов чтобы сделать возможным напрямую использовать коллекцию без необходимости создавать ее самостоятельно. Вам может не хватить некоторых возможностей этих классов или тип коллекции может вам не подходить. На самом деле, после изучения встроенных коллекций классов .NET Framework, вы не можете найти определенную функциональность, которую вы ищете. Как мы видели в предыдущих двух уроках, альтернатива состоит в том, чтобы создать свой собственный класс коллекции, который вы можете сделать с нуля.

Для того чтобы сделать возможным и простым создание такого класса можно использовать производный класс от одного из тех, которые поставляются с .NET Framework. Коллекции интенсивно используются в различных других классах и элементах управления Windows, доступных в Microsoft Visual Studio. Для того, чтобы обеспечить общую функциональность коллекций, используемых в приложениях и базах данных для Windows, .NET Framework предоставляет различные интерфейсы, которые можно реализовать. Doing this gives you the double advantage of creating a collection class and getting familiar with the common collections you will use in graphical applications.

36.1.2Choosing a Class or an Interface

Если вы хотите использовать коллекцию в вашем приложении, вы можете сначала проверить, какие классы доступны в .NET Framework. Если вы не нашли подходящий класс, вы можете создать свой собственный, который реализует один или несколько интерфейсов. .NET Framework поставляется со многими из них и на следующем шаге вы можете выбрать наиболее подходящий. Вот пример наиболее часто используемых интерфейсов:

  • IComparer: Если наследовать класс от этого интерфейса, вы можете определить, каким образом два объекта будут сравниваться

  • IDictionary: Этот интерфейс используется для создания класса коллекции, где каждый элемент представляет собой пару ключ– значение

36.2Интерфейс iCollection

36.2.1 Вступление

В нашем вступлении мы увидели, что одна из основных частей информации, которую вы всегда должны предоставить, это текущее количество элементов коллекции. При создании класса коллекции, для подготовки его к предоставлению этой ценной информации, вы должны реализовать интерфейс ICollection. Интерфейс ICollection определен в пространстве имен System::Collections. Это означает, что если вы создаете класс, который реализует его, вы должны включить это пространство имен:

using namespace System::Collections;

public ref class CCollection : public ICollection

{

};

36.2.2Реализация iCollection

Для того чтобы помочь вам с отслеживанием количества элементов в коллекции, интерфейс ICollection оснащен свойством Count, которое необходимо реализовать. Для этого вы можете создать закрытую переменную, которая будет на самом деле содержать количество элементов. Свойство Count затем может быть использовано для передачи этой информации клиентам класса.

public ref class CCollection : public ICollection

{

private: