c# - 如何比较将两者都转换为 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
类型,并且我将所有内容都作为对象接收。
解决方案
因为您正在比较对象实例;不是枚举值。
您需要将两者都转换为枚举,然后进行比较。或者使用 Object.Equals 方法。
因为当您将它们装箱在一个对象中时,它们将成为不同的实例。
试试这个:
Enum.ToObject(value.GetType(), parameter ?? 0).Equals(Enum.Parse(value.GetType(), value.ToString()))
推荐阅读
- react-native - Swipe down modal only when at the top of FlatList
- python - 根据其他列将数据框的一列转换为numpy数组或张量
- docker - Difference between "docker compose" and "docker-compose"
- json - ESP8266 POST request to Firebase Cloud HTTP Function returns Error 500 Could not handle the request
- ios - ld: in /Users/.../Pods/..., building for iOS Simulator, but linking in object file built for iOS, file '/Users/../Pods/FirebaseAnalyti
- windows - Convert PUCHAR to PWCHAR in Minifilter
- flutter - Google Maps Flutter 在 onTap() 后禁用中心标记
- javascript - 将记录键类型提取为联合类型
- javascript - 切片数字类型错误切片在 javascript 上不起作用
- spring - Spring Boot - JPA Repository - Batch Insert not working (Solved)