从if-else语句中删除重复

时间:2011-06-02 10:52:54

标签: vb.net if-statement

我编写了if...else语句,该语句使用数组myArr和字符串myStr,如下所示:

If myArr.Length > 0 AndAlso myArr(0) = "-1" Then
  'Do stuff 1
ElseIf myStr= "xyz" Then
  'Do stuff 2
ElseIf myArr.Length > 0 Then
  'Do Stuff 3
Else
  'Do Nothing
End If

它完全按照我的需要工作。但它看起来真的很混乱,主要是因为数组长度被检查两次。必须有更清晰的方式来编写它,但我想不出一个。

只是为了澄清....每个语句的执行顺序至关重要。即,东西1优先于东西2,其优先于东西3。

6 个答案:

答案 0 :(得分:2)

我认为你不能以更简单的方式获得完全相同的流程。

要么你最终会做不同的事情,要么做重复的事情。例如:

If myArr.Length > 0 Then
   If myArr(0) = "-1" Then
      'Do stuff
   Else
      'Do stuff
   End If
ElseIf myStr= "xyz" Then
  'Do stuff
Else
  'Do Nothing
End If

当myArr(0)<>时,这将导致mystr =“xyz”不会发生-1,而它之前可能有。

答案 1 :(得分:1)

您可以通过使用嵌套的myArr.Length语句来摆脱对If的多次检查,但这会使代码不那么清晰。

clear 方法(即可以轻松理解的方法)是一种允许您读取代码片段而无需记住代码执行的上下文的方法。通过嵌套If语句,必须在读者工作记忆(或短期记忆)中保留更多信息,以推断出代码的含义。

答案 2 :(得分:0)

您可以像这样分解语句:

If myArr.Length > 0 Then
    If myArr(0) = "-1" Then
       'Do stuff
    Else
       'Do sstuff
    End If
Else
    If myyStr= "xyz" Then
        'Do stuff
    End If
End If

答案 3 :(得分:0)

我想这可以解决问题:

If myArr.Length > 0 Then
   If myArr(0) = "-1" Then
      'Do stuff
   Else
      'Do stuff
   End If
ElseIf myStr= "xyz" Then
  'Do stuff
Else
  'Do Nothing
End If

答案 4 :(得分:0)

如果

,则需要嵌套
If myArr.Length > 0 Then
  'Do stuff for non zero length
    If myArr(0) = "-1" Then
       'Do stuff for -1 and you already have checked for array length
    End If 
End If

答案 5 :(得分:0)

If myArr.Length > 0 Then
  If myArr(0) = "-1" Then
    ' Stuff 1
  Else
    ' Stuff 3
  End If
ElseIf myStr = "xyz"
' Stuff 2
End If

......没有其他需要