2011-03-24 35 views
0

在vb.net中,我定义为整数的枚举:为什么Enum需要使用CType?

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

我想直接分配给枚举变量,但它不工作。

 EntryWorkflowLookUpEdit.EditValue = enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default 

我结束了使用CType并将其转换为整数。

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

这工作,但它增加了一个很大的噪音的代码,它似乎像枚举已被定义为一个整数,让我想到,为什么我需要再次分配呢?

有没有其他方法可以完成这个没有所有的噪音? 我知道我在这里失去了一些东西。

感谢一大堆。

回答

3

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

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

我预计会有相对在大多数代码库中很少有这样的转换。

如果这成为你的重大问题,你总是可以写一个扩展方法ToInt32或类似的东西,只是执行演员。

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

+0

感谢乔恩,我仍然试图掌握一些概念。当你添加它时它会变得烦人,并且它什么都不做(没有错误等),但是它可以在IF语句中使用几行,而不必具有CType。我将不得不做更多的阅读。你(或其他人)是否有任何资源建议,我可以审查? – 2011-03-24 15:55:52

+0

关于命名公约,我必须承认,我像一只跟随别人在我之前完成的事情(有数百个枚举类似的枚举),但我认为遵循.NET命名约定是有意义的。我将改变我的Enum并将其提交给其他开发人员。有一个前缀不仅一次而是两次是愚蠢的! – 2011-03-24 15:56:36

+0

@Gerhard:我不知道任何特定的资源 - 我只是看看MSDN,说实话。 – 2011-03-24 16:01:04