比较 IronPython 中的枚举值

est*_*bro 4 c# enums ironpython

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

if (myObject.TotalGrade == Grade.Fail):
Run Code Online (Sandbox Code Playgroud)

现在,我在获得这两个值后设置了一个断点,并且我确实可以验证它们都保持“失败”;然而,检查失败,程序继续执行下一个子句。python 相等运算符不适合 C# 枚举吗?

附加信息:我已从GradeC# 导入枚举,如下所示。

import clr
clr.AddReferenceToFile("mydll.dll")
from mydll import Grade
Run Code Online (Sandbox Code Playgroud)

Cam*_*ron 5

根据要求,我的评论作为答案:

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

您可以通过直接比较基础值来解决此问题,如下所示:

if myObject.TotalGrade.value__ == Grade.Fail.value__:
    pass  # your code here...
Run Code Online (Sandbox Code Playgroud)