2016-01-12 58 views
-1

我想知道一次聲明變量(在If-then-else循環之外)或多次(在每種情況下)之間有什麼區別:如何聲明一個變量用於多個IF

第一種情況下(我使用這種方式):

If A < 0 Then 
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
ElseIf A = 0 Then 
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
Else 
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
End If 

第二種情況:

Dim YNC As MsgBoxResult 
If A < 0 Then 
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
ElseIf A = 0 Then 
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
Else 
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
End If 

有什麼理由去改變我的代碼?

我做了正確的選擇嗎?

編輯

我更喜歡第一個,因爲它更可讀的(至少對我來說)

EDIT 2

好吧,我覺得我得到我的回答到發佈的史蒂夫鏈接:

最小化範圍

一般來說,在聲明任何變量或常數時,編程練習的好處是儘量縮小範圍(塊 的範圍最窄)。這有助於節省內存,並最大限度地減少代碼錯誤地引用錯誤變量的機會。 同樣,只有在需要在過程 調用之間保留其值時,才應將變量聲明爲靜態(Visual Basic) 。

+1

你想在if後使用YNC嗎?我想是的吧?然後嘗試在ifs中多次聲明它。 [Visual Basic中的範圍](https://msdn.microsoft。com/en-us/library/1t0wsc67.aspx) – Steve

+0

@Steve這是可能的。我有多個msgbox問題。感謝您的鏈接,但我知道範圍限制。我的問題是:什麼更好,爲什麼? – genespos

回答

1

這取決於您是否需要進一步使用該值來控制程序流。

如果您再次需要該值,則別無選擇,只能先聲明它,否則將超出範圍。

「資源」方面的差異非常小(如果有的話),不值得擔心。

+0

在可讀性和代碼質量方面,值得擔心 –

0

在這兩種情況下,變量都會以任何方式生成,如果考慮到代碼的可讀性更好,則情況2會很好。

這導致變量後,如果範圍太大,所以你可以,如果還後使用它..

據我,CASE 2將是開發更好(因爲它不會影響系統的&提供更好的代碼可讀性&進一步變更的可理解性)。

0

您的發佈代碼出現差異。

If A < 0 Then 
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
ElseIf A = 0 Then 
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
Else 
    Dim YNC As MsgBoxResult = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
End If 

' YNC doesn't exists here 

Dim YNC As MsgBoxResult 
If A < 0 Then 
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
ElseIf A = 0 Then 
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
Else 
    YNC = MsgBox("Select Yes-No-Cancel", vbYesNoCancel, "Select") 
    'Some code 
End If 

' YNC does exists and you can use it