2013-02-04 70 views
1

請仔細閱讀我的問題仔細。您即將看到大部分可能非常糟糕的邏輯。Enum似乎分支不同原因不明

Dim num As Boolean 
Select Case MyFoo 
    Case MyFoo.num 
     num = True 
    Case Else 
     num = False 
End Select 

我的問題是:是否有這個case語句分支不同,這取決於環境,或編譯選項,或者等有可能方式 ....我不是這個意思分支隨機,而是一個環境看到它總是分支到別的情況下,和其他環境總是能看到它的分支,以案例MyFoo.num

構建選項/開關,優化規則,環境設置等。

編輯 - 假設我的對象容貌像這樣:

Public Enum MyFoo 
    word = 1 
    otherword = 2 
    num = 3 
    blahblah = 4 
End Enum 
+0

所以你不能把它改爲'Dim num As Boolean = MyFoo = MyFoo.num'? –

+0

我不遵循你的問題。 – user2040277

+0

這是替換整個'Select ... Case'的單線程。 –

回答

0

你可以使用條件編譯

Dim num as boolean 
#if myfoo 
    Num = true 
#else 
    Num = false 
#end if 

然後,您可以在爲構建環境

+0

這對於調試可能很有用。我會在項目選項部分中設置值? – user2040277

+0

在編譯部分(在高級編譯器選項下),它允許您定義編譯器常量。然後檢查這些是否被定義。 – user1937198

+0

@ user2040277如果使用它進行調試,值得了解VB.Net在任何調試版本上定義了DEBUG,並且您可以使用#const爲單個文件定義symobls。 – user1937198

1

項目選項聲明myfoo常數是否有這個case語句分支任何可能的方式根據環境的不同,或建立選項等...

唯一的方法如果聲明中MyFoo變量中存儲了不同的值,則這將分支不同。環境不應該改變分支邏輯。

這就是說,你永遠不會顯示代碼,設置MyFoo。根據某些環境設置,變量的設置可能會有所不同,這可能會導致您看到此行爲。

+0

我在MyFoo中編輯過。除非你的意思是別的嗎? – user2040277

+0

@ user2040277我的意思是變量'MyFoo',而不是類型,在這裏使用:'Select Case MyFoo' –

+0

我不熟悉VB,並且該對象正在傳入(這是Subroutine的一部分)。什麼樣的代碼會改變它? – user2040277