我有以下枚举:
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
上编写扩展方法返回 true
或 false
.
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/