2009-03-26 3 views

ответ

7
If val1 = valN AndAlso val2 = valN AndAlso ... Then 
End If 

Это может стать громоздким при тестировании более чем нескольких значений.

1

Невозможно связать их вместе. Вам нужно разбить его на pair'd сравнений, связанного AndAlso

if val1 = val2 AndAlso val2 = val3 AndAlso val1 = val3 Then 
+0

Вам не нужно последнее сравнение: знач1 = val3 –

+1

@Patrick, это спорно. Вы можете исключить val1 = val3, если знаете, что тип имеет транзитивное равенство. Хотя это справедливо для большинства типов, я нашел случайное сравнение, которое заполняет этот тест из-за 1) явного безумия или 2) ошибок в равенстве. – JaredPar

+0

@ Jared, справедливо, мне не хотелось бы писать условие, когда N начинает получать намного больше, чем :) –

2

Если у вас есть много значений, чтобы проверить и сделать это очень часто, вы могли бы написать вам помощник, как это:

Public Function AllTheSame(ByVal ParamArray values() As Object) As Boolean 
    For index As Integer = 1 To values.Length - 1 
     If values(0) <> values(index) Then Return False 
    Next 
    Return True 
End Function 

<Fact()> Public Sub testAllTheSame() 
    Assert.True(AllTheSame("Test")) 
    Assert.True(AllTheSame("Test", "Test")) 
    Assert.True(AllTheSame("Test", "Test", "Test")) 

    Assert.True(AllTheSame(1234)) 
    Assert.True(AllTheSame(1234, 1234, 1234)) 

    Assert.False(AllTheSame("Test", "Test2")) 
    Assert.False(AllTheSame("Test", "Test", "Test3")) 

    Assert.False(AllTheSame(1234, 1234, 987)) 
End Sub 
Смежные вопросы