2016-01-12 29 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