Универсальный интерфейс .NET Framework

Автор: Пользователь скрыл имя, 22 Февраля 2012 в 17:13, реферат

Описание работы

Платформа .NET Framework — это интегрированный компонент Windows, который поддерживает создание и выполнение нового поколения приложений и веб-служб XML. При разработке платформы .NET Framework учитывались следующие цели:• Обеспечение согласованной объектно-ориентированной среды программирования для локального сохранения и выполнения объектного кода, для локального выполнения кода, распределенного в Интернете, либо для удаленного выполнения.
• Обеспечение среды выполнения кода, минимизирующей конфликты при развертывании программного обеспечения и управлении версиями.

Работа содержит 1 файл

ООП.doc

— 155.00 Кб (Скачать)

Интерфейс ICollection(T) расширяет интерфейсы IEnumerable(T); IDictionary(TKey, TValue) и IList(T) и является более специализированным интерфейсом, чем ICollection(T). Реализация IDictionary(TKey, TValue) является коллекцией пар ключ/значение, аналогичные классу Dictionary(TKey, TValue). Реализация IList(T) является коллекцией значений, и доступ к ее элементам может быть осуществлен с помощью индекса, как в классе List(T).

Некоторые коллекции, аналогичные классам Queue(T) и Stack(T), в которых доступ к элементам ограничен, напрямую реализуют интерфейс ICollection(T).

Если ни интерфейс IDictionary (TKey, TValue), ни интерфейс IList(T), не соответствует требованиям коллекции, для большей гибкости можно создать производный класс коллекции из интерфейса ICollection(T).

 

 

IEnumerable(T) - интерфейс

 

Предоставляет перечислитель, который поддерживает простой перебор элементов в указанной коллекции.

Пространство имен:  System.Collections.Generic

Сборка:  mscorlib (в mscorlib.dll)

Синтаксис

Язык Visual Basic (Объявление)

Public Interface IEnumerable(Of T) _

    Implements IEnumerable

Язык Visual Basic (Использование)

Dim instance As IEnumerable(Of T)

Язык C#

public interface IEnumerable<T> : IEnumerable

Язык Visual C++

generic<typename T>

public interface class IEnumerable : IEnumerable

Язык J#

J# поддерживает использование универсальных интерфейсов API, но не объявление новых таких интерфейсов.

Язык JScript

JScript не поддерживает универсальные типы и методы.

Параметры типа : тип объектов для перечисления.

 

IList(T) – интерфейс

 

Представляет коллекцию объектов, доступ к которым может быть получен отдельно, по индексу.

Пространство имен:  System.Collections.Generic

Сборка:  mscorlib (в mscorlib.dll)

Синтаксис

Язык Visual Basic (Объявление)

Public Interface IList(Of T) _

    Implements ICollection(Of T), IEnumerable(Of T),  _

    IEnumerable

Язык Visual Basic (Использование)

Dim instance As IList(Of T)

Язык C#

public interface IList<T> : ICollection<T>,

    IEnumerable<T>, IEnumerable

Язык Visual C++

generic<typename T>

public interface class IList : ICollection<T>,

    IEnumerable<T>, IEnumerable

Язык J#

J# поддерживает использование универсальных интерфейсов API, но не объявление новых таких интерфейсов.

Язык JScript

JScript не поддерживает универсальные типы и методы.

Параметры типа : тип элементов в списке.

Заметки

Универсальный интерфейс IList(T) является потомком универсального интерфейса ICollection(T) и является базовым интерфейсом всех универсальных списков.

 

IDictionary(TKey, TValue) - интерфейс

 

Представляет универсальную коллекцию пар ключ/значение.

Пространство имен:  System.Collections.Generic

Сборка:  mscorlib (в mscorlib.dll)

Синтаксис

Язык Visual Basic (Объявление)

Public Interface IDictionary(Of TKey, TValue) _

    Implements ICollection(Of KeyValuePair(Of TKey, TValue)),  _

    IEnumerable(Of KeyValuePair(Of TKey, TValue)), IEnumerable

Язык Visual Basic (Использование)

Dim instance As IDictionary(Of TKey, TValue)

Язык C#

public interface IDictionary<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>,

    IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable

Язык Visual C++

generic<typename TKey, typename TValue>

public interface class IDictionary : ICollection<KeyValuePair<TKey, TValue>>,

    IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable

Язык J#

J# поддерживает использование универсальных интерфейсов API, но не объявление новых таких интерфейсов.

Язык JScript

JScript не поддерживает универсальные типы и методы.

Параметры типа

TKey

Тип ключей в словаре.

TValue

Тип значений в словаре.

Заметки

Интерфейс IDictionary(TKey, TValue) является базовым интерфейсом для универсальных коллекций пар ключ/значение.

Каждый элемент в паре ключ/значение хранится в объекте KeyValuePair (TKey, TValue).

Каждая пара ключ/значение должна иметь уникальный ключ. Реализации могут изменяться в зависимости от того, допускают ли они для параметра key значение null (Nothing в Visual Basic). Значением может быть значение null (Nothing в Visual Basic), оно не должно быть уникальным. В интерфейсе IDictionary(TKey, TValue) разрешено перечисление хранящихся ключей и значений, но не существует какого-то определенного порядка сортировки.

 

IEnumerator(T) - интерфейс

 

Поддерживает простой перебор элементов универсальной коллекции.

Пространство имен:  System.Collections.Generic

Сборка:  mscorlib (в mscorlib.dll)

Синтаксис

Язык Visual Basic (Объявление)

Public Interface IEnumerator(Of T) _

    Implements IDisposable, IEnumerator

Язык Visual Basic (Использование)

Dim instance As IEnumerator(Of T)

Язык C#

public interface IEnumerator<T> : IDisposable,

    IEnumerator

Язык Visual C++

generic<typename T>

public interface class IEnumerator : IDisposable,

    IEnumerator

Язык J#

J# поддерживает использование универсальных интерфейсов API, но не объявление новых таких интерфейсов.

Язык JScript

JScript не поддерживает универсальные типы и методы.

Параметры типа : тип объектов для перечисления.

Заметки

Интерфейс IEnumeratorT) является базовым интерфейсом для всех универсальных перечислителей.

Оператор foreach языка C# (for each в C++, For Each в Visual Basic) позволяет скрыть сложный механизм перечисления. Поэтому рекомендуется вместо непосредственного использования перечислителя применять ключевое слово foreach.

Перечислители могут использоваться для чтения данных коллекции; они не могут использоваться для изменения коллекции.

Изначально перечислитель располагается перед первым элементом коллекции. В этой позиции значение свойства Current не определено. Поэтому необходимо вызвать метод MoveNext до считывания значения свойства Current, чтобы переместить перечислитель к первому элементу коллекции.

Свойство Current возвращает тот же объект, пока не будет вызван метод MoveNext. Метод MoveNext задает свойство Current следующему элементу.

Если метод MoveNext достигает конца коллекции, перечислитель располагается после последнего элемента коллекции, а MoveNext возвращает значение false. Когда перечислитель находится в этой позиции, последующие вызовы метода MoveNext также возвращают значение false. Если при последнем вызове метода MoveNext было возвращено значение false, значение свойства Current не определено. Значение свойства Current не может быть повторно задано первому элементу коллекции; вместо этого следует создать новый экземпляр перечислителя.

Метод Reset предназначен для COM-взаимодействия. Нет необходимости осуществлять реализацию; можно просто использовать выдачу исключения NotSupportedException.

Перечислитель остается допустимым, пока в коллекцию не вносятся изменения. Если в коллекцию вносятся изменения, такие как добавление, изменение или удаление элементов, перечислитель становится необратимо недопустимым, а его поведение — неопределенным.

Перечислитель не имеет монопольного доступа к коллекции, поэтому перечисление для коллекции в действительности не является потокобезопасной процедурой. Чтобы гарантировать потокобезопасность при перечислении, можно заблокировать коллекцию на все время выполнения процедуры перечисления. Чтобы разрешить доступ к коллекции из нескольких потоков для чтения и записи, необходимо реализовать собственную синхронизацию.

Используемые по умолчанию реализации коллекций в пространстве имен System.Collections.Generic не синхронизированы.

Примечания для реализующих объектов:

Реализация этого интерфейса требует реализации неуниверсального интерфейса IEnumerator. Методы MoveNext и Reset не зависят от параметра T и появляются только в неуниверсальном интерфейсе. Свойство Current появляется в обоих интерфейсах и имеет различные типы возврата. Реализация неуниверсального свойства IEnumerator.Current в качестве явной реализации интерфейса. Это позволяет любому потребителю неуниверсального интерфейса использовать и универсальный интерфейс.

 

 

 

11

 



Информация о работе Универсальный интерфейс .NET Framework