[英]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中定义的虚方法。
您通常不希望引用类型的是==
,它通常会比较两个引用是否引用同一个对象。
在您的情况下, A
和B
被装入2个不同的对象。 A
指第一个, B
指第二个。 ==
正在测试并发现两者都referring
是不同的东西。
只需使用A.Equals(B)
,它将调用内部类型Equals。
在你的情况下你不能使用==
因为A和B被装在2个不同的对象中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.