Как вы проверяете несколько значений для равенства в одной строке? В основном я хочу сделатьVB.Net: проверить несколько значений для равенства?
if (val1 == val2 == val3 == ... valN)
но в VB.Net.
Как вы проверяете несколько значений для равенства в одной строке? В основном я хочу сделатьVB.Net: проверить несколько значений для равенства?
if (val1 == val2 == val3 == ... valN)
но в VB.Net.
If val1 = valN AndAlso val2 = valN AndAlso ... Then
End If
Это может стать громоздким при тестировании более чем нескольких значений.
Невозможно связать их вместе. Вам нужно разбить его на pair'd сравнений, связанного AndAlso
if val1 = val2 AndAlso val2 = val3 AndAlso val1 = val3 Then
Если у вас есть много значений, чтобы проверить и сделать это очень часто, вы могли бы написать вам помощник, как это:
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
Вам не нужно последнее сравнение: знач1 = val3 –
@Patrick, это спорно. Вы можете исключить val1 = val3, если знаете, что тип имеет транзитивное равенство. Хотя это справедливо для большинства типов, я нашел случайное сравнение, которое заполняет этот тест из-за 1) явного безумия или 2) ошибок в равенстве. – JaredPar
@ Jared, справедливо, мне не хотелось бы писать условие, когда N начинает получать намного больше, чем :) –