I nuovi operatori AndAlso e OrElse di VB.NET

di Daniele Bochicchio, in ASP.NET, VB.NET, VB.NET,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi