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

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

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

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

2018-01-29 167
Классы коллекций общего назначения 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.038 с.