Книга: C# 4.0: полное руководство
Форматирование перечислений
Форматирование перечислений
В C# допускается также форматировать значения, определяемые в перечислении. Вообще говоря, значения из перечисления могут отображаться как по имени, так и по значению. Спецификаторы формата перечислений сведены в табл. ”22.10. Обратите особое внимание на форматы G и F. Перед перечислениями, которые должны представлять битовые поля, следует указывать атрибут Flags. Как правило, в битовых полях хранятся значения, обозначающие отдельные двоичные разряды и упорядоченные по степени числа 2. При наличии атрибута Flags
имена всех битовых составляющих форматируемого значения, если, конечно, это действительное значение, отображаются с помощью спецификатора G. А с помощью спецификатора F отображаются имена всех битовых составляющих форматируемого значения, если оно составляется путем логического сложения по ИЛИ двух или более полей, определяемых в перечислении.
Таблица 22.10. Спецификаторы формата перечислений
Спецификатор
Назначение
D
Отображает значение в виде десятичного целого числа
d
То же, что и D
F
Отображает имя значения. Если это значение можно создать путем логического сложения по ИДИ двух или более полей, определенных в перечислении, то данный спецификатор отображает имена всех битовых составляющих заданного значения, причем независимо оттого, задан атрибут Flags
или нет
f
То же, что и F
G
Отображает имя значения. Если перед форматируемым перечислением указывается атрибут Flags
, то данный спецификатор отображает имена всех битовых составляющих заданного значения, если, конечно, это допустимое значение
g
То же, что и G
X
Отображает значение в виде шестнадцатеричного целого числа. Для отображения как минимум восьми цифр форматируемое значение дополняется (при необходимости) начальными нулями
х
То же, что и X
В приведенной ниже программе демонстрируется применение спецификаторов формата перечислений.
// Отформатировать перечисление.
using System;
class EnumFmtDemo {
enum Direction { North, South, East, West }
[Flags]
enum Status {
Ready = 0x1, OffLine = 0x2,
Waiting = 0x4, TransmitOK = 0x8,
ReceiveOK = 0x10, OnLine = 0x20
}
static void Main() {
Direction d = Direction.West;
Console.WriteLine("{0:G}", d);
Console.WriteLine("{0:F}", d);
Console.WriteLine("{0:D}", d);
Console.WriteLine("{0:X}", d);
Status s = Status.Ready | Status.TransmitOK;
Console.WriteLine("{0:G}", s);
Console.WriteLine("{0:F}", s);
Console.WriteLine("{0:D}", s);
Console.WriteLine("{0:X}", s);
}
}
Ниже приведен результат выполнения этой программы.
West
West
3
00000003
Ready, TransmitOK
Ready, TransmitOK
9
00000009
- ГЛАВА 22 Строки и форматирование
- Как в документ Microsoft Word вставить текст, в котором отсутствует форматирование?
- Трюки с форматированием
- 2.9. Форматирование строк
- Чем отличается быстрое форматирование от обычного?
- Как сбросить форматирование текста в Microsoft Word?
- 4.20. Форматирование дискет в Linux
- Практическая работа 31. Форматирование символов
- Форматирование абзацев
- Практическая работа 32. Форматирование абзацев
- Практическая работа 34. Форматирование документа с помощью стилей
- Урок 5.5. Форматирование страниц и печать