Come molti di voi sapranno, VB non supporta il cosiddetto meccanismo di "short-circuiting" negli operatori AND e OR.
In parole povere, l'istruzione viene eseguita per intero, anche se una delle condizioni non dovesse essere in accordo con l'operatore stesso.
Si consideri qualcosa del tipo:
If a>0 AND b>0 then Viene sempre controllato il valore di b, anche nel caso in cui a non è maggiore di 0 e la condizione risulti pertanto falsa già in partenza. Per ovviare a questo (inutile) spreco di risorse, a partire dalla beta 2 (e quindi anche nella versione finale) VB.NET supporta due nuovi operatori, AndAlso e OrElse, che permettono di utilizzare lo short-circuiting. In questo modo, la seconda parte di una eventuale istruzione composta da due condizioni legate dall'operatore AndAlso verrà eseguita solo nel caso in cui la prima risultasse vera. Ecco un semplice esempio: [code lang="aspx"]<%@Page Language="VB"%> <SCRIPT language="VB" runat="server"> Sub Page_Load(Sender As Object, E As EventArgs) Page.Validate ' esegui solo se è in PostBack ed è valida if Page.IsPostBack AndAlso Page.IsValid then lblTest.Text = "ok!" end if End Sub </SCRIPT> <form runat="server"> <asp:label id="lblTest" runat="server"/> <asp:button type="submit" text="test" runat="server"/> </form>
Perchè sono stati creati due operatori nuovi anzichè modificare il comportamento di quelli esistenti?
Una modifica del genere avrebbe reso inutilizzabile una parte notevole del codice VB, rendendo di fatto più difficile la conversione verso VB.NET.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.