Язык программирования C#9 и платформа .NET5
Шрифт:
...
// Выводит строку "Contractor = 100".
Console.WriteLine("{0} = {1}", emp.ToString, (byte)emp);
Console.ReadLine;
На заметку! Статический метод
Enum.Format
предлагает более высокий уровень форматирования за счет указания флага желаемого формата. Полный список флагов форматирования ищите в документации. В типе
System.Enum
определен еще один статический метод
GetValues
, возвращающий экземпляр класса System.Array
. Каждый элемент в массиве соответствует члену в указанном перечислении. Рассмотрим следующий метод, который выводит на консоль пары "имя-значение" из перечисления, переданного в качестве параметра:
// Этот метод выводит детали любого перечисления.
static void EvaluateEnum(System.Enum e)
{
Console.WriteLine("=> Information about {0}", e.GetType.Name);
// Вывести лежащий в основе тип хранилища.
Console.WriteLine("Underlying storage type: {0}",
Enum.GetUnderlyingType(e.GetType));
// Получить все пары "имя-значение" для входного параметра.
Array enumData = Enum.GetValues(e.GetType);
Console.WriteLine("This enum has {0} members.", enumData.Length);
// Вывести строковое имя и ассоциированное значение,
// используя флаг формата D (см. главу 3).
for(int i = 0; i < enumData.Length; i++)
{
Console.WriteLine("Name: {0}, Value: {0:D}",
enumData.GetValue(i));
}
}
Чтобы протестировать метод
EvaluateEnum
, модифицируйте код для создания переменных нескольких типов перечислений, объявленных в пространстве имен System
(вместе с перечислением EmpTypeEnum
):
Console.WriteLine("**** Fun with Enums *****");
...
EmpTypeEnum e2 = EmpType.Contractor;
// Эти типы являются перечислениями из пространства имен System.
DayOfWeek day = DayOfWeek.Monday;
ConsoleColor cc = ConsoleColor.Gray;
EvaluateEnum(e2);
EvaluateEnum(day);
EvaluateEnum(cc);
Console.ReadLine;
Ниже показана часть вывода:
=> Information about DayOfWeek
Underlying storage type: System.Int32
This enum has 7 members.
Name: Sunday, Value: 0
Name: Monday, Value: 1
Name: Tuesday, Value: 2
Name: Wednesday, Value: 3
Name: Thursday, Value: 4
Name: Friday, Value: 5
Name: Saturday, Value: 6
В
System.Enum
. Использование перечислений, флагов и побитовых операций
Побитовые операции предлагают быстрый механизм для работы с двоичными числами на уровне битов. В табл. 4.3 представлены побитовые операции С#, описаны их действия и приведены примеры.
Чтобы взглянуть на побитовые операции в действии, создайте новый проект консольного приложения по имени
FunWithBitwiseOperations
. Поместите в файл Program.cs
следующий код:
using System;
using FunWithBitwiseOperations;
Console.WriteLine("===== Fun wih Bitwise Operations");
Console.WriteLine("6 & 4 = {0} | {1}", 6 & 4, Convert.ToString((6 & 4),2));
Console.WriteLine("6 | 4 = {0} | {1}", 6 | 4, Convert.ToString((6 | 4),2));
Console.WriteLine("6 ^ 4 = {0} | {1}", 6 ^ 4, Convert.ToString((6 ^ 4),2));
Console.WriteLine("6 << 1 = {0} | {1}", 6 << 1, Convert.ToString((6 << 1),2));
Console.WriteLine("6 >> 1 = {0} | {1}", 6 >> 1, Convert.ToString((6 >> 1),2));
Console.WriteLine("~6 = {0} | {1}", ~6, Convert.ToString(~((short)6),2));
Console.WriteLine("Int.MaxValue {0}", Convert.ToString((int.MaxValue),2));
Console.readLine;
Ниже показан результат выполнения этого кода:
===== Fun wih Bitwise Operations
6 & 4 = 4 | 100
6 | 4 = 6 | 110
6 ^ 4 = 2 | 10
6 << 1 = 12 | 1100
6 >> 1 = 3 | 11
~6 = -7 | 11111111111111111111111111111001
Int.MaxValue 1111111111111111111111111111111
Теперь, когда вам известны основы побитовых операций, самое время применить их к перечислениям. Добавьте в проект новый файл по имени
ContactPreferenceEnum.cs
и приведите его код к такому виду:
Поделиться:
Популярные книги
Безымянный раб [Другая редакция]
1. Дорога домой
Фантастика:
боевая фантастика
9.41
рейтинг книги
Измена. Свадьба дракона
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Не грози Дубровскому! Том VIII
8. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последняя Арена 7
7. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
На границе империй. Том 9. Часть 3
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Все не так, как кажется
Любовные романы:
современные любовные романы
7.70
рейтинг книги
Я же бать, или Как найти мать
Любовные романы:
современные любовные романы
6.44
рейтинг книги
Боярышня Дуняша
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Аромат невинности
Любовные романы:
любовно-фантастические романы
эро литература
9.23
рейтинг книги
Кодекс Крови. Книга IХ
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Свет во мраке
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Приручитель женщин-монстров. Том 3
3. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Жестокая свадьба
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Безродный
1. Игра не для слабых
Фантастика:
боевая фантастика
альтернативная история
6.67