比较IronPython中的枚举值

本文关键字:枚举 IronPython 比较 | 更新日期: 2023-09-27 18:28:23

在IronPython脚本中,我试图将对象(在C#中创建)的属性(类型为Grade)与Grade枚举的一个可能值进行比较。例如:

if (myObject.TotalGrade == Grade.Fail):

现在,在获得这两个值后,我设置了一个断点,并且我确实可以验证它们都持有"Fail";但是,检查失败,程序进入下一个子句。python相等运算符是否不适用于C#枚举?

附加信息:我已经从C#导入了Grade枚举,如下所示。

import clr
clr.AddReferenceToFile("mydll.dll")
from mydll import Grade

比较IronPython中的枚举值

根据请求,我的评论作为回答:

我不知道为什么它们不能比较相等,但显然枚举在IronPython中是作为装箱类型实现的——在这种情况下,似乎有两个不同的对象用于相同的枚举值。

你可以通过直接比较基本值来解决这个问题,如下所示:

if myObject.TotalGrade.value__ == Grade.Fail.value__:
    pass  # your code here...