繁体   English   中英

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

[英]Compare two objects that contain enum values of the same enum type

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

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

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

我怎样才能做到这一点?

关于何时使用==以及何时使用Equals,MSDN上有一篇很好的文章。

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

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

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

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

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

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

在你的情况下你不能使用==因为A和B被装在2个不同的对象中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM