我定义了一个枚举类型:EnumType 现在想象
object A = EnumType.Value1;
object B = EnumType.Value2;
我想进行比较(A == B)给出正确的结果,与使用的Enum类型无关。在比较中,对象将始终包含枚举,并且两者的类型相同。
我怎样才能做到这一点?
答案 0 :(得分:4)
There is a good article on MSDN on when to use == and when to use Equals.
基本上有两种类型的相等:引用相等和值相等。如果2个对象具有引用相等性,则它们因此也具有值相等性(两个引用都指向同一个对象,因此它们的值当然相同)。
相反,(在你的情况下)并非总是如此。如果2个对象具有值相等,则它们不一定具有引用相等性。在您的情况下,==
充当参考相等。
通常你想要的是Equals
,它是System.Object中定义的虚方法。
您通常不希望引用类型为==
,它通常会比较两个引用是否引用同一个对象。
在您的情况下,A
和B
被装入2个不同的对象中。 A
指的是第一个,B
指的是第二个。 ==
正在测试并看到两者都是referring
不同的东西。
答案 1 :(得分:3)
只需使用A.Equals(B)
,它就会调用内部类型Equals。
在您的情况下,您无法使用==
,因为A和B被装在2个不同的对象中。