Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч


Преимущества и недостатки структур


Download 2.46 Mb.
bet50/91
Sana19.10.2023
Hajmi2.46 Mb.
#1709453
TuriУчебно-методический комплекс
1   ...   46   47   48   49   50   51   52   53   ...   91
Bog'liq
Язык программирования C#

11.3. Преимущества и недостатки структур

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


Основной же недостаток структур – это невозможность наследования от структуры. Вторым существенным недостатком являются частые потери производительности связанные с упаковкой и распаковкой. Дело в том, что большинство функций ждут в качестве параметров классы или интерфейсы и при передаче им структуры её нужно преобразовать в класс и пометить в кучу, что требует некоторое время. Обратный процесс помещения полей структуры из кучи в стек называется распаковкой.


11.4. Понятие перечисления

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


Перечисление – это совокупность целочисленных констант, объединенных в одно целое и имеющих понятные для человека, осмысленные имена.
11.5. Определение перечислений

Для определения перечислений используется ключевое слово enum. За ним следует имя перечисления, далее через двоеточие может следовать базовый для перечисления тип (по умолчанию используется тип int), за тем в фигурных скобках следуют имена констант, образующий перечисление. Обычно константам перечисления явно не присваиваются значения, но это можно сделать, поставив после имени константы оператор присваивания и нужное значения. Общий формат для определения перечисления имеет следующий вид.




enum имя_перечисления : базовый_тип {имя1 = значение1,…, имяN = значениеN};

Как уже говорилось выше явное указание базового типа и значений переменных не требуется и обычно опускается. Создадим теперь простое перечисление для работы с днями недели.


enum Days { Sat, Sun, Mon, Tue, Wed, Thu, Fri };


Лист. 2.9

Базовым типом этого перечисления является int. А значения, которые компилятор присвоит константам, будут соответствовать порядку их перечисления, начиная с 0.


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

enum Days: byte { Sat, Sun, Mon, Tue, Wed, Thu, Fri };


Лист. 2.10

По умолчанию первой константе из перечисления присваивается значение 0, а затем по порядку следования 1, 2, 3 и т.д. Этот порядок может быть легко изменен явным присвоением константе нужного значения.


enum Days: byte { Sat = 1, Sun, Mon, Tue = 10, Wed, Thu, Fri };


Лист. 2.11

В этом примере первые три константы будут иметь значения 1,2 и 3 соответственно, а остальные константы получат значения 10, 11, 12, 13 и 14.



Download 2.46 Mb.

Do'stlaringiz bilan baham:
1   ...   46   47   48   49   50   51   52   53   ...   91




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling