Flags
С Flags объединение
имен печатается через запятую.
Без атрибута то же числовое
значение даёт имя числа.
Проверка - метод HasFlag.
Синтаксис
[Flags]
enum Access
{
Read = 1,
Write = 2
}
Пример
Давайте объединить Read
и Write с Flags:
using System;
[Flags]
enum Access
{
Read = 1,
Write = 2
}
class Program
{
static void Main()
{
Access value = Access.Read | Access.Write;
string res = value.ToString();
Console.WriteLine(res);
}
}
Результат выполнения кода:
"Read, Write"
Пример
Давайте напечатать то же
значение без Flags:
using System;
enum Plain
{
Read = 1,
Write = 2
}
class Program
{
static void Main()
{
Plain value = (Plain)3;
string res = value.ToString();
Console.WriteLine(res);
}
}
Результат выполнения кода:
"3"
Пример
Давайте проверить флаг
Read через HasFlag:
using System;
[Flags]
enum Access
{
Read = 1,
Write = 2
}
class Program
{
static void Main()
{
Access value = Access.Read | Access.Write;
bool res = value.HasFlag(Access.Read);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
Атрибут,
синтаксис скобок -
Attribute,
базовый класс -
Obsolete,
устаревшее -
Conditional,
условная компиляция