2011-03-24 64 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