如何声明一个变量以将其用于多个 IF

How to declare a variable for using it into multiple IF

我想知道一次(在 If-then-else 循环之外)或多次(在每种情况下)声明变量之间的相关区别是什么:

第一种情况(我就是这样用的):

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

是否有任何理由更改我的代码?

我选对了吗?

编辑

我更喜欢第一个,因为它更具可读性(至少对我而言)

编辑 2

好的,我想我在史蒂夫发布的 link 中找到了答案:

Minimizing Scope

In general, when declaring any variable or constant, it is good programming practice to make the scope as narrow as possible (block scope is the narrowest). This helps conserve memory and minimizes the chances of your code erroneously referring to the wrong variable. Similarly, you should declare a variable to be Static (Visual Basic) only when it is necessary to preserve its value between procedure calls.

这取决于您是否需要进一步使用该值来控制程序流。

如果您再次需要该值,您别无选择,只能先声明它,否则它将超出范围。

"resources" 方面的差异非常小(如果有的话),因此不值得担心。

无论哪种情况,无论如何都会生成变量,如果考虑代码的可读性更好,情况2会更好。

这也导致变量在IF之后的作用域,所以你也可以在IF之后使用它..

根据我的说法,CASE 2 对开发人员来说更好(因为它不会影响系统并为进一步的更改提供更好的代码可读性和可理解性)。

差异出现在您发布的代码之后。

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