2009-03-26 7 views

Antwort

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

Dies kann beim Testen von mehr als ein paar Werten umständlich werden.

1

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 
+0

Sie brauchen den letzten Vergleich nicht: val1 = val3 –

+1

@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

+0

@Jared, fair genug, ich würde nicht gerne die Bedingung schreiben müssen, wenn N anfängt, viel größer zu werden :) –

2

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 
Verwandte Themen