2016-03-10 3 views
1

Так что мне просто любопытно и пытаюсь улучшить мое текущее приложение. Невозможно найти примеры этого.Как я могу упростить и улучшить использование нескольких if-statements?

У меня есть набор флажков cbc в моей форме, и я хочу что-то сделать, если ни один из них не отмечен.

Есть ли лучшие способы сделать это?

 If Not cbc1.Checked = True Then 
     If Not cbc2.Checked = True Then 
      If Not cbc3.Checked = True Then 
       If Not cbc4.Checked = True Then 
        If Not cbc5.Checked = True Then 
         If Not cbc6.Checked = True Then 
          If Not cbc7.Checked = True Then 
           If Not cbc8.Checked = True Then 
            If Not cbc9.Checked = True Then 

             'Do this and that 

            End If 
           End If 
          End If 
         End If 
        End If 
       End If 
      End If 
     End If 
    End If 

Я нахожу это немного грязным и, вероятно, не очень хорошим способом написать хороший код.

ответ

3

Почему бы не использовать .All() from LINQ? Это круто (и читаемым)

Dim checkBoxes As New List(Of CheckBox) From {cbc1,cbc2,cbc3} 'all your check boxes 
If checkBoxes.All(Function(cb) Not cb.Checked) Then 
    'Do this and that 
End If 

Также вам не нужно делать if boolObj = True Then. Просто if boolObj Then в порядке.

Редактировать: Состояние было наоборот. Исправлено.

+0

Джек, это именно то, что я искал. Большое спасибо за хорошее объяснение и внимание на ответ! :) – MadsTheMan

+0

Нет проблем. Но вы должны проверить, как использовать 'AndAlso' тоже (как упоминалось другими). Мой ответ - своего рода причудливый способ. – jack3694078

+0

Да, спасибо, я собираюсь. Хотя я нашел ваш способ очень удобочитаемым, поэтому я могу придерживаться этого, если у него нет огромных недостатков по сравнению с «AndAlso». :) – MadsTheMan

0

Поскольку вы ничего не делаете, кроме вашего последнего оператора If, почему бы не использовать оператор AND и не объединить все логические проверки? Таким образом, у вас будет только один, если затем конец, если цикл.

+1

'AndAlso' лучше в этом случае, кроме' And', он будет продолжать проверять, не возвращает ли пока что выражение «False». –

+0

Мне очень хотелось бы видеть, как оператор 'and' будет работать в моем примере, так как я не знаком с и/или' и вместе с ним', как упоминалось в @VisualVincent. Хотя я нашел ответ Джека, чтобы решить мою проблему отлично. Не уверен, какой путь будет лучше. – MadsTheMan

+1

@MadsTheMan: Джек, вероятно, лучший, так как его легче читать и настраивать. Операторы 'And' /' AndAlso' работают следующим образом: 'Если cbc1.Checked = True AndAslo cbc2.Checked = True AndAslo cbc3 ...' и так далее. См. MSDN: https://msdn.microsoft.com/en-us/library/cb8x3kfz.aspx _ (обратите внимание, что вы можете использовать столько «AndAlso', сколько хотите в одной строке) _ –