C# 枚举始终为空

Kit*_*Net 0 c# enums flags

在 C# 中,我有以下枚举。我希望能够运行我的验证函数并返回通过所述枚举发现的问题,但它似乎总是包含 OK。

我读到的所有内容都说使用 0 表示无,至少对我来说,这在逻辑上似乎等同于 OK,因为不存在“无”问题。但如果我检查“enum.HasFlag(ValidationResult.OK)”,它将 100% 地返回 true,无论设置了多少其他值。我觉得如果它不等于0,就不应该说它等于。这对我来说似乎很糟糕。

处理这个问题的正确方法是什么?

[Flags]
public enum ValidationResult
{
    OK,
    NotOK,
    ReallyNotOk
}
Run Code Online (Sandbox Code Playgroud)
void Main()
{
    var x = ValidationResult.OK;
    Console.Write(x.HasFlag(ValidationResult.OK)); // true
    
    
    var y = ValidationResult.NotOk;
    Console.Write(y.HasFlag(ValidationResult.OK)); // still true for some reason
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*igt 5

0不是旗帜,而是完全没有旗帜。Ok如果标志代表不同类型的故障,那么将标签赋予...可能是合适的,0但它仍然不是标志并且无法使用 进行测试HasFlag

Console.Write(y == ValidationResult.OK); // works correctly
Run Code Online (Sandbox Code Playgroud)