Sinds vb2005 bestaat er een "nieuwe" and namelijk AndAlso. Deze AndAlso vervangt niet de and functie, maar is een andere vorm van een and. Het verschil zit hem in het feit dat statements die volgen na de AndAlso niet worden uitgevoerd wanneer het statement (of statements) voor de AndAlso niet voldaan zijn. Bij een gewone And functie worden alle statements na gekeken zelfs als de voorgaande niet voldaan zijn. Dit resulteert in een onnodige vertraging die je bij een AndAlso niet gaat hebben. Wat ook een feit is, is dat wanneer je geen AndAlso gebruikt, dat je dan meerdere if-statements in elkaar gaat moeten nesten. Het voorbeeld hieronder toont hiervan een voorbeeld. Wanneer num een string is, dan zal het bij de eerste if geen probleem geven. Wanneer er ipv de AndAlso een and staat, dan ga je een probleem krijgen bij option strict on. Wanneer je de "cint(num)" vervangt door "cint(val(num))" , dan ga je ook geen probleem hebben omdat je dan de value neem van num, en dit is 0 als num niet numeriek is. Je zit dus dat het met de AndAlso veel korter geschreven kan worden.
Code:
dim num as string = textbox1.text
if isnumeric(num) andalso cint(num) > 5 MessageBox.show("Groter als 5") else MessageBox.show("Geen getal of niet groter dan 5") end if
'zonder andAlso:
Dim num As String = TextBox1.Text
If IsNumeric(num) Then If CInt(num) > 5 Then MessageBox.Show("Groter als 5") Else MessageBox.Show("Niet groter dan 5") End If Else MessageBox.Show("Geen getal of niet groter dan 5") End If
3020 x gelezen
Commentaar
ArComAr - 30 Nov 2007 - 13:36
OrElse doet net hetzelde bij een else statement. Als het eerste true is, dan worden de rest van de statements in die for niet meer bekeken.