我有以下重载签名+
:
public static double operator +(MyClass x, MyEnum e)
和以下形式的表达式:
x.Value = someMyClassValue + MyEnum.X;
调试器显示的行为就像表达式是:
x.Value = MyEnum.X;
重载永远不会被调用。
我也有:
public static double operator +(MyClass x, object o)
但这对于枚举也不会被调用,尽管它对于其他情况也是如此。
我也有 string、int、float、double 的重载,它们都工作得很好。为什么 enum 是一个特例,为什么会有奇怪的行为?这可能是 Mono 编译器中的错误吗?
我在 Ubuntu 13.04 上使用 Mono 2.10.8.1。
后记
问题是我还定义了一个隐式转换为int
. 有关详细信息,请参阅我的答案。