Это не поддерживается в C #, но, возможно, вы можете обойти это и сделать что-то «рядом» с перечислением, используя кортежи или анонимные типы, если вам нужно только переключить какое-то состояние и вам не нужно делать никаких специальныхоперации с ним.
Например, используя кортежи, вы можете сделать это:
var someFakeEnum = Tuple.Create(0, 1);
ОБНОВЛЕНИЕ :
В C # 7 введены синтаксические кортежи:
var someFakeEnum = (State1: 0, State2: 1);
Или с анонимными типами:
var someFakeEnum = new { State1 = 0, State2 = 1 };
И после этого вы можете сделать что-то вроде:
int state = 0;
// If you're using tuples...
if(some condition)
{
state = someFakeEnum.Item2;
}
// ...or if you're using anonymous types or C# >= 7 tuples...
if(some condition)
{
state = someFakeEnum.State2;
}
Очевидно, что это не фактическое перечисление, и у вас нет сахара, который предоставляет тип Enum, но вы все равно можете использовать бинарные операторы, такие как OR, AND, или условные выражения, как любое другое действительное перечисление.