c# - bool 转换问题的枚举

标签 c# casting enums typeconverter

我有以下枚举:

public enum MyEnum
{
    MyTrue,
    MyFalse
}

我希望最终能够自动将我的枚举转换为 bool 值,使用如下简单的一行:

MyEnum val = MyEnum.MyTrue;
bool IsThisTrue = val;

目前,我必须这样做:

bool IsThisTrue = val == MyEnum.MyTrue;

是否有某种机制可以应用于我的枚举以允许 native enum->bool 转换?我想知道我是否需要某种类型转换器的变体。

谢谢

编辑:我的自定义枚举是有原因的。由于这些属性最终都绑定(bind)到一个属性网格,我们有机制将我们所有的自定义枚举绑定(bind)到资源文件中的多语言字符串。我们需要使用的所有枚举都位于特定的命名空间中,因此需要“MyEnum”类。

最佳答案

该行仅适用于隐式静态转换运算符(或者可能是更令人困惑的 true() 运算符,但在野外很少见)。您不能在枚举上定义运算符,所以最终答案是:不。

但是,您可以MyEnum 上编写扩展方法返回 truefalse .

static class MyEnumUtils {
    public static bool Value(this MyEnum value) {
        switch(value) {
            case MyEnum.MyTrue: return true;
            case MyEnum.MyFalse: return false;
            default: throw new ArgumentOutOfRangeException("value");
                 // ^^^ yes, that is possible
        }
    }
}

然后你可以使用bool IsThisTrue = val.Value();

关于c# - bool 转换问题的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651361/

相关文章:

c# - JObject ToString 与 StringEnumConverter 不工作

c++ - 需要帮助解决错误 C2664

c# - ToString() 和转换为字符串的区别

json - Scala,喷雾-json : universal enumeration json formatting

WPF枚举值作为ObjectDataProvider的方法参数

c# - 如何在 C#.net 中制作嵌套的子窗体

c# - XDocument 到 XElement

c - 按名称获取枚举值

c# - WPF ListView/GridView 单选bug

c++ - 无法将 'a'(类型 'int')转换为类型“double&”