Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Базовий клас System.Enum




 

Всі перелічення в С# є нащадками базового класу System.Enum, який забезпечує їх деякими корисними методами.

Статичний метод GetName дозволяє отримати символічне ім'я константи по її номеру, наприклад:

 

Console.WriteLine(Enum.GetName(typeof(Flags),8)); // b4

Console.WriteLine(Enum.GetName(typeof(Боец.Воинское_Звание),1)); //Сержант

 

Статичні методи GetNames і GetValues формують, відповідно, масиви імен і значень констант, складових перелічення, наприклад:

 

Array names = Enum.GetNames(typeof(Flags));

Console.WriteLine("Кількість елементів в переліченні: " + names.Length);

foreach (string elem in names) Console.Write(" " + elem);

Array values = Enum.GetValues(typeof(Flags));

foreach (Flags elem in values) Console.Write(" " + (byte) elem);

 

Статичний метод IsDefined повертає значення true, якщо константа із заданим символічним ім'ям описана у вказаному переліченні, і false в іншому випадку, наприклад:

 

if (Enum.IsDefined(typeof(Flags), "b5"))

Console.WriteLine("Константа з ім'ям b5 існує ");

else Console.WriteLine("Константа з ім'ям b5 не існує ");

Статичний метод GetUnderlyingType повертає ім'я базового типу, на якому побудовано перелічення. Наприклад, для перелічення Flags буде отримано System.Byte:

Console.WriteLine(Enum.GetUnderlyingType(typeof(Flags)));

 

9.8. Рекомендації по програмуванню

Інтерфейси найчастіше використовуються для завдання загальних властивостей об'єктів різних ієрархій. Основна ідея інтерфейсу полягає в тому, що до об'єктів класів, що реалізовують інтерфейс, можна звертатися однаковим чином. При цьому кожен клас може визначати елементи інтерфейсу по-своєму.

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

У С# підтримується одиночне спадкоємство для класів і множинне - для інтерфейсів. Це дозволяє додати похідному класу властивості декількох базових інтерфейсів. Клас повинен визначати всі методи всіх інтерфейсів, які є в списку його предків.

У бібліотеці .NET визначена велика кількість стандартних інтерфейсів. Реалізація стандартних інтерфейсів у власних класах дозволяє використовувати для об'єктів цих класів стандартні засоби мови і бібліотеки.

Наприклад, для забезпечення можливості сортування об'єктів стандартними методами слід реалізувати у відповідному класі інтерфейси IComparable або IComparer. Реалізація інтерфейсів IEnumerable і IEnumerator дає можливість проглядати вміст об'єкту за допомогою конструкції foreach, а реалізація інтерфейсу ICloneable - клонувати об'єкти.

Використання ітераторів спрощує організацію перебору елементів і дозволяє задати для одного і того ж класу різні стратегії перебору.

Сфера застосування структур - типи даних, що мають невелику кількість полів, з якими зручніше працювати як із значеннями, а не як з посиланнями. Накладні витрати на динамічне виділення пам'яті для екземплярів невеликих класів можуть значно понизити швидкодію програми, тому їх ефективніше описувати як структури.

Перевага використання перелічення для опису зв'язаних між собою значень полягає в тому, що це наочніше і інкапсульовано, чим велика кількість іменованих констант. Крім того, компілятор виконує перевірку типів, а інтегроване середовище розробки підказує можливі значення констант, виводячи їх список.

 

РОЗДІЛ 10. ДЕЛЕГАТИ, ПОДІЇ І ПОТОКИ ВИКОНАННЯ

 

У цьому розділі розглядаються делегати і події - два взаємозв'язані засоби мови С#, що дозволяють організувати ефективну взаємодію об'єктів. Крім того приводяться початкові відомості про розробку багатопотокових застосувань.

 




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


Дата добавления: 2014-12-27; Просмотров: 400; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.