首页 > 解决方案 > 如何比较将两者都转换为 Enum 的对象和整数值?

问题描述

为什么以下返回false?值对象是SomeEnum运行时的类型。

我正在将两个对象都转换为相同的类型,但是我仍然将其视为错误。

我究竟做错了什么?

object value = SomeEnum.FirstValue;
object parameter = 0;
Console.Write(Enum.ToObject(value.GetType(), parameter ?? 0) == Enum.Parse(value.GetType(), value.ToString()));

问题是我无法直接访问该SomeEnum类型,并且我将所有内容都作为对象接收。

标签: c#

解决方案


因为您正在比较对象实例;不是枚举值。

您需要将两者都转换为枚举,然后进行比较。或者使用 Object.Equals 方法。

因为当您将它们装箱在一个对象中时,它们将成为不同的实例。

试试这个:

 Enum.ToObject(value.GetType(), parameter ?? 0).Equals(Enum.Parse(value.GetType(), value.ToString()))

推荐阅读