Hallo!
> In meinem asp.net-Buch steht, dass vb.net bei "and" die Abarbeitung
> einfach intern optimiert. Wenn der erste Operator false ist, kann der
> Ausruck nur false werden.
> Der zweite Operator wird dann gar nicht getestet.
In der MSDN steht es anders herum, allerdings nur in der englischen.
Bei AND oder OR werden immer beide Seiten ausgewertet, bei ANDALSO oder
ORELSE die rechte Seite nur dann, wenn das Ergebnis noch nicht feststeht,
also links TRUE (bei ANDALSO) oder FALSE (bei ORELSE).
Da f�llt doch auf, dass viele Buchautoren doch nur aus der MSDN abschreiben
und dabei auch die Fehler �bernehmen.
> bei andalso werde ein "UND mit Auswertung der rechten Seiten" gemacht
>
> ist das so richtig?
>
> Wenn ich
> If isNumeric(Request.QueryString("Seite")) andalso
> (cint(Request.QueryString("Seite"))>1) Then
> ...
>
> mache, funktioniert es wie gew�nscht. Wenn ich nur ein AND mache und
> Seite einen Buchstaben enth�lt, bricht er mit einer Fehlermeldung ab.
> Das w�rde aus meiner Sicht eher darauf schliessen, dass es
> umgekehrt ist.
>
> MAch ich einen Denkfehler?
Nein, den gleichen Denkfehler hatte ich auch. ;-)
Um bei Deinem Beispiel zu bleiben: Ohne ANDALSO m�sste man das ja so
schreiben:
If isNumeric(Request.QueryString("Seite")) Then
If Cint(Request.QueryString("Seite")) > 1 Then
...
End If
End If
Die Optimierung besteht also darin, dass man das zweite If-Statement
einspart. Das ist vor allem dann wichtig, wenn der rechte Ausdruck eine
Exception ausl�st wenn der linke nicht wahr ist, also genau Dein Beispiel.
Die Laufzeit-Optimierung findet jedoch nur bei den "neuen" Operatoren
ANDALSO und ORELSE statt.
Freundliche Gr��e
Joachim van de Bruck
_______________________________________________
Asp.net mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/asp.net