首页 文章

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

提问于
浏览
-1

我想知道一次声明变量(从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

有什么理由改变我的代码吗?

我做了正确的选择吗?

EDIT

我更喜欢1st,因为它更具可读性(至少对我而言)

EDIT 2

好的,我想我在Steve发布的链接中得到了答案:

最小化范围通常,在声明任何变量或常量时,最好使编程范围尽可能窄(块范围最窄) . 这有助于节省内存并最大限度地减少代码错误引用错误变量的可能性 . 同样,只有在必须在过程调用之间保留其值时,才应将变量声明为Static(Visual Basic) .

3 回答

  • 0

    在这两种情况下,无论如何都会生成变量 . 如果考虑代码的可读性更好,则情况2会很好 .

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

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

  • 0

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

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

    “资源”方面的差异非常小(如果有的话),不值得担心 .

  • 1

    您发布的代码后会出现差异 .

    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
    

相关问题