981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 Время выполнения: 00:00:00.0140000 Время выполнения: 0:00:00.014 Время выполнения: 0:00:00:00.0140000 Время выполнения: 0.014 секунды

Форматирование перечислений

В 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=0xl, OffLine=Ox2,

Waiting=0x4, TransmitOK=Ox8,

ReceiveOK=OxlO, OnLine=0x20 }

static void Main() {

Direction d = Direction.West;

Console.WriteLine("{0:G}", d);

Console.WriteLine("{0:F}", d);    1

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

ГЛАВА 23 Многопоточное программирование. Часть первая: основы

Перейти на страницу:

Похожие книги