Поделиться через


Строки форматов перечисления

Метод можно использовать Enum.ToString для создания нового строкового объекта, представляющего числовое, шестнадцатеричное или строковое значение элемента перечисления. Этот метод принимает одну из строк форматирования перечисления, чтобы указать возвращаемое значение.

В следующих разделах перечислены строки форматирования перечисления и возвращаемые значения. Эти спецификаторы формата не чувствительны к регистру.

G или g

Отображает запись перечисления в виде строкового значения, если это возможно, и в противном случае отображает целочисленное значение текущего экземпляра. Если перечисление определено с набором FlagsAttribute , строковые значения каждой допустимой записи объединяются вместе, разделенные запятыми. Flags Если атрибут не задан, недопустимое значение отображается в виде числовой записи. В следующем примере показан G спецификатор формата.

Console.WriteLine(((DayOfWeek)7).ToString("G"));      // 7
Console.WriteLine(ConsoleColor.Red.ToString("G"));    // Red

var attributes = FileAttributes.Hidden | FileAttributes.Archive;
Console.WriteLine(attributes.ToString("G"));          // Hidden, Archive
Console.WriteLine((CType(7, DayOfWeek)).ToString("G"))    ' 7
Console.WriteLine(ConsoleColor.Red.ToString("G"))         ' Red
Dim attributes As FileAttributes = FileAttributes.Hidden Or _
                                   FileAttributes.Archive
Console.WriteLine(attributes.ToString("G"))               ' Hidden, Archive

F или f

Отображает запись перечисления в виде строкового значения, если это возможно. Если значение может отображаться в виде суммирования записей перечисления (даже если Flags атрибут отсутствует), строковые значения каждой допустимой записи объединяются вместе, разделенные запятыми. Если значение не может быть определено записями перечисления, то значение отформатировано как целочисленное значение. В следующем примере показан F спецификатор формата.

Console.WriteLine(((DayOfWeek)7).ToString("F"));       // Monday, Saturday
Console.WriteLine(ConsoleColor.Blue.ToString("F"));    // Blue

var attributes = FileAttributes.Hidden | FileAttributes.Archive;
Console.WriteLine(attributes.ToString("F"));           // Hidden, Archive
Console.WriteLine((CType(7, DayOfWeek)).ToString("F"))    ' Monday, Saturday
Console.WriteLine(ConsoleColor.Blue.ToString("F"))        ' Blue
Dim attributes As FileAttributes = FileAttributes.Hidden Or _
                                   FileAttributes.Archive
Console.WriteLine(attributes.ToString("F"))               ' Hidden, Archive

D или d

Отображает запись перечисления как целочисленное значение в самом кратком представлении. В следующем примере показан D определитель формата.

Console.WriteLine(((DayOfWeek)7).ToString("D"));       // 7
Console.WriteLine(ConsoleColor.Cyan.ToString("D"));    // 11

var attributes = FileAttributes.Hidden | FileAttributes.Archive;
Console.WriteLine(attributes.ToString("D"));           // 34
Console.WriteLine((CType(7, DayOfWeek)).ToString("D"))     ' 7
Console.WriteLine(ConsoleColor.Cyan.ToString("D"))         ' 11
Dim attributes As FileAttributes = FileAttributes.Hidden Or _
                                   FileAttributes.Archive
Console.WriteLine(attributes.ToString("D"))                ' 34

X или x

Отображает запись перечисления в виде шестнадцатеричного значения. Значение представлено начальными нулями при необходимости, чтобы гарантировать, что в строке результата есть два символа для каждого байта в базовом числовом типе перечисления. В следующем примере показан описатель формата X. В примере базовые типы DayOfWeek, ConsoleColor и FileAttributes имеют значение Int32, 32-разрядного (или 4-байтового) целого числа, которое создает 8-символьную строку результата.

Console.WriteLine(((DayOfWeek)7).ToString("X"));       // 00000007
Console.WriteLine(ConsoleColor.Cyan.ToString("X"));    // 0000000B

var attributes = FileAttributes.Hidden | FileAttributes.Archive;
Console.WriteLine(attributes.ToString("X"));           // 00000022
Console.WriteLine((CType(7, DayOfWeek)).ToString("X"))    ' 00000007
Console.WriteLine(ConsoleColor.Cyan.ToString("X"))        ' 0000000B
Dim attributes As FileAttributes = FileAttributes.Hidden Or _
                                   FileAttributes.Archive
Console.WriteLine(attributes.ToString("X"))               ' 00000022

Пример

В следующем примере определяется перечисление, которое Colors состоит из трех записей: Red, Blueи Green.

public enum Color { Red = 1, Blue = 2, Green = 3 };
Public Enum Color
    Red = 1
    Blue = 2
    Green = 3
End Enum

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

Color myColor = Color.Green;
Dim myColor As Color = Color.Green

Затем метод Color.ToString(System.String) можно использовать для отображения значения перечисления различными способами, в зависимости от переданного в него спецификатора форматирования.

Console.WriteLine($"The value of myColor is {myColor.ToString("G")}.");
Console.WriteLine($"The value of myColor is {myColor.ToString("F")}.");
Console.WriteLine($"The value of myColor is {myColor.ToString("D")}.");
Console.WriteLine($"The value of myColor is 0x{myColor.ToString("X")}.");
// The example displays the following output to the console:
//       The value of myColor is Green.
//       The value of myColor is Green.
//       The value of myColor is 3.
//       The value of myColor is 0x00000003.
Console.WriteLine("The value of myColor is {0}.", _
                  myColor.ToString("G"))
Console.WriteLine("The value of myColor is {0}.", _
                  myColor.ToString("F"))
Console.WriteLine("The value of myColor is {0}.", _
                  myColor.ToString("D"))
Console.WriteLine("The value of myColor is 0x{0}.", _
                  myColor.ToString("X"))
' The example displays the following output to the console:
'       The value of myColor is Green.
'       The value of myColor is Green.
'       The value of myColor is 3.
'       The value of myColor is 0x00000003.      

См. также