Как объяснено в этом ответе и в этой статье MSDN , вы можете искать следующее вместо BitField
[Flags]
enum Foo
{
bar0 = 0,
bar1 = 1,
bar2 = 2,
bar3 = 4,
bar4 = 8,
...
}
, поскольку это можетбыть немного раздражающим, чтобы вычислить до 2 32 , вы также можете сделать это:
[Flags]
enum Foo
{
bar0 = 0,
bar1 = 1 << 0,
bar2 = 1 << 1,
bar3 = 1 << 2,
bar4 = 1 << 3,
...
}
И вы можете получить доступ к своим флагам, как вы ожидаете в C:
Foo myFoo |= Foo.bar4;
и C # в .NET 4 бросают вам кость с помощью метода HasFlag()
.
if( myFoo.HasFlag(Foo.bar4) ) ...