Wie testen Sie mehrere Werte für die Gleichheit in einer Zeile? Grundsätzlich möchte ichVB.Net: mehrere Werte auf Gleichheit prüfen?
if (val1 == val2 == val3 == ... valN)
aber in VB.Net tun.
Wie testen Sie mehrere Werte für die Gleichheit in einer Zeile? Grundsätzlich möchte ichVB.Net: mehrere Werte auf Gleichheit prüfen?
if (val1 == val2 == val3 == ... valN)
aber in VB.Net tun.
If val1 = valN AndAlso val2 = valN AndAlso ... Then
End If
Dies kann beim Testen von mehr als ein paar Werten umständlich werden.
Es gibt keine Möglichkeit, sie so zusammen zu ketten. Sie müssen es lösen sich in pair'd comparisions von AndAlso verknüpft
if val1 = val2 AndAlso val2 = val3 AndAlso val1 = val3 Then
Wenn Sie eine Menge von Werten zu testen und dies zu tun sehr oft, Sie Sie einen Helfer so schreiben könnte:
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
Sie brauchen den letzten Vergleich nicht: val1 = val3 –
@Patrick, es ist umstritten. Sie können das val1 = val3 ausschließen, wenn Sie wissen, dass der Typ transitive Gleichheit hat. Während dies für die meisten Typen gilt, habe ich den gelegentlichen Vergleich gefunden, der diesen Test aufgrund von 1) explizitem Wahnsinn oder 2) Fehlern in Gleichheit durchläuft. – JaredPar
@Jared, fair genug, ich würde nicht gerne die Bedingung schreiben müssen, wenn N anfängt, viel größer zu werden :) –