Классы коллекций общего назначения — КиберПедия 

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

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Классы коллекций общего назначения

2018-01-29 172
Классы коллекций общего назначения 0.00 из 5.00 0 оценок
Заказать работу

Класс Описание Реализуемые интерфейсы
ArrayList Динамически изменяемый по размерам массив объектов любого типа ICollection, IEnumerable, IEnumerator, IList, ICloneable
HashTable Коллекция объектов, идентифицируемая по числовому ключу ICollection, IDictionary, ICloneable, IEnumerable
Queue   Стандартная очередь или последовательный список (то есть каждый объект обрабатывается по порядку) ICollection, IEnumerable, ICloneable
Stack Стек, обеспечивающий функциональные возможности стека: добавление в стек Push(…), извлечение Pop(…). ICollection, IEnumerable, ICloneable

 

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

Динамическая идентификация типов. Проверка типа с помощью ключевого слова is. Использование операторов as, typeof.

Принципы обобщённого программирования (абстрагирование и иерархия) были рассмотрены при изучении интерфейсов и коллекций. Динамическая идентификация типов позволяет распознать тип данных во время работы программы. Она используется при работе с массивом объектов базового класса, а так же для проверки удачно ли выполнена операция «приведение к типу». Динамическая идентификация типов является ключевым компонентом средства – отражение (предоставление информации о типе).

В C# динамическую идентификацию типов поддерживают три ключевых слова: is, as, typeof.

 

Проверка типа с помощью ключевого слова – is (является ли)

С помощью is можно определить: имеет ли рассматриваемый объект заданный тип. Общая форма его записи:

Выражение is Тип.
Тип выражения сравнивается с указанным типом и возвращается true или false.

Задание: В проекте Планиметрия объявить объекты класса Point и Otrezok, распознать типы с помощью ключевого слова is.
//В Main():

Point T1 = new Point(-28,39);

Point T2 = new Point(2, 5);

Otrezok Otr1 = new Otrezok(T1,T2);

///Напишем логическое выражение:

//1)

if (T1 is Point)

Console.WriteLine("Объект Т1 имеет тип Point");

//Выполнить!

 

//2)

if (Otr1 is Point)

Console.WriteLine("Объект Otr1 совместим с типом Point");

//Выполнить!

// Получим true, так как отрезок наследуется от класса Point, т.е совместим с ним.

 

//3)

if (T1 is Otrezok)

Console.WriteLine("Объект T1 совместим с типом Otrezok");

//Выполнить!

 

//Получим false, ведь класс Point не наследуется от класса Otrezok.

 

//4)

if (T2 is Object)

Console.WriteLine("T2 - это объект");

//Выполнить!

 

4.2. Использование оператора as (как)

Иногда во время работы программы требуется выполнить операцию приведения типов (явное приведение), не генерируя исключения в случае, если попытка будет неудачной. Для этого предусмотрен оператор as.
Общая форма его записи:

Выражение as Тип.

В отличие от слова is, если операция прошла успешна, то возвращается ссылка на указанный тип, а иначе возвращается null -ссылка. Оператор as – альтернатива слову is.

Задание: Проверить, можно ли объект T1 использовать как отрезок.

//В Main():

if (T1 as Otrezok!= null)

Otr1 = (Otrezok)T1;

else Otr1 = null;

if (Otr1 == null)

Console.WriteLine("Приведение типов не разрешено!");

else

Console.WriteLine("Приведение типов разрешено!");

//Выполнить!

Использование оператора typeof

Иногда нужно получить информацию о типе данных. Для таких случаев в C# предусмотрен оператор typeof (Тип). Он использует класс System.Type для получения данных об указанном типе.

Задание: В проекте Планиметрия получить полное имя типа заданного класса SteamReader (класс для создания входного потока символов, текстового файла).

//В Main():

//Объявим объект класса Type:

Type Ob = typeof(StreamReader);

Console.WriteLine("Полное имя типа " + Ob.FullName);

//Выполнить!

if (Ob.IsClass)

Console.WriteLine("Это - класс!");

else

Console.WriteLine("Это - не класс");

//Выполнить!

if (Ob.IsAbstract)

Console.WriteLine("Это - абстрактный класс!");

else

Console.WriteLine("Это - конкретный класс!");

//Выполнить!

 

Задание: Аналогично получить информацию о своём классе Otrezok.

Type ob = typeof(Otrezok);

Console.WriteLine("Полное имя типа " + ob.FullName);

//Выполнить!

 

if (ob.IsClass)

Console.WriteLine("Это - класс!");

else

Console.WriteLine("Это - не класс");

//Выполнить!

 

if (ob.IsAbstract)

Console.WriteLine("Это - абстрактный класс!");

else

Console.WriteLine("Это - конкретный класс!");

//Выполнить!

 


Поделиться с друзьями:

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

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.017 с.