在一个IronPython脚本中,我试图比较一个对象(用C#创建)的属性(类型为Grade
)与Grade
enum的其中一个可能值。因此,例如:比较IronPython中的枚举值
if (myObject.TotalGrade == Grade.Fail):
现在,我已经得到这两个值后,设置断点,我确实可以验证他们两人举行“失败”;但是,检查失败并且程序转到下一个子句。 python相等运算符不适合C#枚举吗?
附加信息:我已经从我的C#导入了Grade
枚举,如下所示。
import clr
clr.AddReferenceToFile("mydll.dll")
from mydll import Grade
不知道为什么他们会不会比较相等,但显然枚举的[实现为盒装类型(HTTP://名单IronPython中的.ironpython.com/pipermail/users-ironpython.com/2005-August/000915.html) - 对于相同的枚举值,您似乎有两个不同的对象。你可以通过直接通过'myObject.TotalGrade.value__ == Grade.Fail.value__'比较基础值来解决这个问题。 – Cameron 2014-10-29 18:28:02
@Cameron哇,我不知道你是怎么发现的,但是人是那种无价的电子邮件交换。感谢解决这个谜。你能发表你的评论作为答案,所以我可以接受它吗? – estebro 2014-10-29 19:12:05
添加了答案。至于邮件列表,我只是围绕IronPython枚举搜索一下;-) – Cameron 2014-10-29 19:52:20