比较两个包含相同枚举类型的枚举值的对象

时间:2010-05-28 15:06:48

标签: c#

我定义了一个枚举类型:EnumType 现在想象

object A = EnumType.Value1;
object B = EnumType.Value2;

我想进行比较(A == B)给出正确的结果,与使用的Enum类型无关。在比较中,对象将始终包含枚举,并且两者的类型相同。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

There is a good article on MSDN on when to use == and when to use Equals.

基本上有两种类型的相等:引用相等和值相等。如果2个对象具有引用相等性,则它们因此也具有值相等性(两个引用都指向同一个对象,因此它们的值当然相同)。

相反,(在你的情况下)并非总是如此。如果2个对象具有值相等,则它们不一定具有引用相等性。在您的情况下,==充当参考相等。

  • 通常你想要的是Equals,它是System.Object中定义的虚方法。

  • 您通常不希望引用类型为==,它通常会比较两个引用是否引用同一个对象。

在您的情况下,AB被装入2个不同的对象中。 A指的是第一个,B指的是第二个。 ==正在测试并看到两者都是referring不同的东西。

答案 1 :(得分:3)

只需使用A.Equals(B),它就会调用内部类型Equals。

在您的情况下,您无法使用==,因为A和B被装在2个不同的对象中。