基于布尔值更改标志

Ada*_*oll 5 c# binary enums flags

有没有更优雅的方式这样做?

[Flags]
public enum SomeFlaggedEnum
{
    Value1 = 1,
    Value2 = 2,
    Value3 = 4
}


private SomeFlaggedEnum _myFlags;

public bool EnabledValue1
{
    set 
    {
        if (value)
        {
            _myFlags |= SomeFlaggedEnum.Value1;
        }
        else
        {
            _myFlags &= ~SomeFlaggedEnum.Value1;
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

我知道可能有一个简单的答案,我只是想一想......

编辑:如其中一个答案所指出的,枚举是不正确的.这只是在这个例子中,而不是在实际的代码中.

i_a*_*orf 8

我的意思是,你可以这样做:

_myFlags = value ? myFlags | SomeFlaggedEnum.Value1 : myFlags & ~SomeFlaggedEnum.Value1;
Run Code Online (Sandbox Code Playgroud)

但我认为你的解决方案很好.


Jon*_*eet 6

好吧,你可以使用一个条件:

_myFlags = value ? _myFlags | SomeFlaggedEnum.Value1
                 : _myFlags & ~SomeFlaggedEnum.Value1;
Run Code Online (Sandbox Code Playgroud)