Operatori logici di VB.NET AndAlso e OrElse

VB.NET presenta due operatori logici che aiutano a rendere la tua programmazione ... beh ... più logica. I nuovi operatori sono E anche e O altro e aggiungono molto ai vecchi operatori And e Or.

Cosa c'è di nuovo

AndAlso e OrElse hanno alcune proprietà che migliorano il codice in modi che le precedenti versioni di VB non potevano corrispondere. Offrono vantaggi in due categorie generali:

  • È possibile evitare di eseguire parte di un'espressione logica per evitare problemi.
  • È possibile ottimizzare il codice non eseguendo più un'espressione composta di quanto richiesto.

AndAlso e OrElse sono praticamente simili a And e Or, tranne per il fatto che "cortocircuiteranno" un'espressione una volta che il risultato è garantito.

Esempio

Supponiamo che stai codificando un test di un risultato di calcolo come questo:

L'espressione if genera un errore di "divisione per zero" in VB 6 perché Value3 è zero. (Vedi il suggerimento rapido sulla divisione per zero per ulteriori informazioni al riguardo.) Potrebbe essere che i casi che portano a Valore3 zero siano molto rari e si verificano solo quando ti stai godendo una vacanza a migliaia di miglia di distanza in modo da poter essere chiamato torna per riparare il programma in una modalità di emergenza. (Ehi! Succede!)

Ricodifichiamo il programma come programma .NET usando AndAlso e vediamo cosa succede.

Dopo aver cambiato And in AndAlso, il programma funziona! Il motivo è che l'ultima parte del composto If condition- (valore 2 \ value3) non viene mai effettivamente eseguita. Quando si utilizza AndAlso, VB.NET sa che l'espressione non può avere successo una volta determinato che la prima parte della condizione -a non è maggiore di Value1-è falsa. Quindi VB.NET smette di valutare l'espressione proprio lì. Un esempio simile potrebbe essere costruito usando OrElse.

Questa analisi suggerisce anche come aggiungere un po 'di efficienza al codice disponendo correttamente un'espressione logica composta. Se si posiziona l'espressione che è più probabile che sia falsa nella posizione più a sinistra quando si utilizza AndAlso, è possibile impedire l'utilizzo di cicli di esecuzione per valutare l'espressione più a destra. In un singolo test, non farebbe abbastanza differenza da valere la pena di pensarci. Ma se il tuo test è all'interno di un ciclo di qualche tipo e viene eseguito miliardi di volte, potrebbe fare una grande differenza.

Conoscere questi due nuovi operatori logici di VB .NET può aiutarti a evitare errori molto sottili o ottenere efficienze sottili.