为什么Enum需要使用CType?

时间:2011-03-24 14:33:36

标签: vb.net enums

在vb.net中,我得到了一个定义为整数的枚举:

    Enum enUtilityTypeDetailStudentEntryWorkflow As Integer
        enUTDSEW_Default = 379
        enUTDSEW_ApplicantRecordBook = 380
    End Enum

我想将Enum直接分配给变量,但它不起作用。

        EntryWorkflowLookUpEdit.EditValue = enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default

我最终使用了CType并将其转换为Integer。

        EntryWorkflowLookUpEdit.EditValue = CType(enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default, Integer)

这有效,但它会给代码增加很多噪音,看起来Enum已被定义为Integer,让我想一想,为什么我必须再次分配它?

有没有其他方法可以在没有噪音的情况下实现这一目标? 我知道我在这里遗漏了一些东西。

非常感谢。

1 个答案:

答案 0 :(得分:3)

枚举被定义为使用整数作为其基础类型。

好事这是一个明确的转换IMO,因为这意味着你不会意外地最终使用枚举值,你真正意味着只使用直整数。枚举的目的是有效地对数字有不同的“观点” - 并且改变你正在使用的“观点”应该是明确的。

我希望在大多数代码库中都有相对这样的转换。

如果这对您来说成为一个重要问题,您总是可以编写ToInt32或类似的扩展方法,只执行演员表。

就个人而言,如果我试图减少此代码中的噪音,我会尝试找到一个比enUtilityTypeDetailStudentEntryWorkflow更短的名称 - 并且同时符合.NET命名约定。