2013-07-31 91 views
0

有沒有辦法在運行時在vb6中創建一個枚舉? 基本上我需要創建一個產品的枚舉,但我會在運行時獲得產品的數據,這應該會有所不同。動態枚舉vb6

回答

6

編號

枚舉的整點是在編譯時提供類型安全。例如,如果函數接受枚舉值作爲參數,則根據枚舉類型的成員來定義有效輸入的範圍。它不必擔心如何處理無效輸入,因爲這會導致編譯器錯誤。

在運行時沒有辦法實現這種類型的安全,所以動態創建的枚舉沒有多大意義。無論如何,它們不是語言或運行時環境所支持的功能。

您必須使用唯一標識符(如字符串或數字值)代替枚舉。如果需要,可以創建一個數組或另一個將這些ID映射到唯一鍵(例如產品名稱)的集合類。然後,您可以在運行時動態地將產品添加到陣列,並按名稱檢索其ID。

請注意,使用此策略,您需要驗證輸入並手動處理任何錯誤。

+1

+1但在VB6中沒有編譯器檢查傳遞給期望Enum的例程的值。並沒有運行時檢查:( – MarkJ

+0

@MarkJ堅果,真的?感謝您的更正。我想這並不奇怪,C和C++有相同的行爲。無論如何,我開始懷疑它是否已經很遠太長,因爲我實際上使用VB 6的任何生產代碼回答與該標籤的問題: - / –