我定义了一个枚举类型:EnumType现在想象一下
object A = EnumType.Value1;
object B = EnumType.Value2;
Run Code Online (Sandbox Code Playgroud)
我想进行比较(A == B)给出正确的结果,与使用的Enum类型无关.在比较中,对象将始终包含枚举,并且两者将具有相同的类型.
我怎样才能做到这一点?
MSDN上有一篇不错的文章,介绍何时使用==和何时使用Equals。
基本上有两种平等类型:引用平等和价值平等。如果2个对象具有引用相等,则它们因此也具有值相等(两个引用都指向同一对象,因此它们的值当然是相同的)。
相反,(在您的情况下)并非总是如此。如果2个对象具有值相等,则它们不一定具有引用相等。在你的情况下==是作为引用相等。
通常您想要的是Equals,它是System.Object中定义的虚拟方法。
您通常不希望引用类型为==,它通常会比较两个引用是否引用同一对象。
在您的情况下A,B被装在2个不同的对象中。 A指第一个,B指第二个。 ==正在测试,并发现两者都是referring不同的东西。