Operatorii logici VB.NET AndAlso și OrElse

VB.NET oferă doi operatori logici care vă ajută să vă faceți programarea ... bine ... mai logic. Noii operatori sunt Si deasemenea și OrElse și adaugă mult la vechii operatori And și Sau.

Ce mai e nou

AndAlso și OrElse au unele proprietăți care îți îmbunătățesc codul în moduri în care versiunile VB anterioare nu se potrivesc. Acestea oferă avantaje în două categorii generale:

  • Puteți evita să executați o parte dintr-o expresie logică pentru a evita problemele.
  • Puteți optimiza codul prin a nu mai executa o expresie compusă decât este necesar.

AndAlso și OrElse seamănă destul de mult cu And and Sau, cu excepția faptului că vor „scurtcircuita” o expresie odată ce rezultatul va fi garantat.

Exemplu

Să presupunem că codificați un test al unui rezultat de calcul astfel:

Expresia if generează o eroare "divide cu zero" în VB 6 deoarece Value3 este zero. (Dar consultați Sfatul rapid privind împărțirea cu zero pentru mai multe despre asta.) S-ar putea ca cazurile care au ca rezultat Value3 să fie zero sunt foarte rare și apar doar atunci când vă bucurați de o vacanță la o mie de mile distanță, astfel încât să puteți fi apelat înapoi pentru a repara programul într-un mod de urgență. (Hei! Se întâmplă!)

Să recodificăm programul ca un program .NET folosind AndAlso și să vedem ce se întâmplă.

După schimbarea Și la AndAlso, programul funcționează! Motivul este că ultima parte a compusului If condition- (valoarea 2 \ value3) - nu a fost executată niciodată. Când utilizați AndAlso, VB.NET știe că expresia nu poate avea succes odată ce se stabilește că prima parte a condiției - a nu este mai mare decât Value1 - este falsă. Prin urmare, VB.NET nu mai evaluează expresia chiar acolo. Un exemplu similar ar putea fi construit folosind OrElse.

Această analiză sugerează, de asemenea, cum puteți adăuga o anumită eficiență codului dvs. aranjând corect o expresie logică compusă. Dacă așezați expresia care este cea mai probabilă falsă în poziția din stânga atunci când utilizați AndAlso, puteți împiedica utilizarea ciclurilor de execuție pentru a evalua cea mai bună expresie. Într-un singur test, nu ar face suficientă diferență pentru a merita să mă gândesc. Dar dacă testul dvs. se află într-o buclă de un fel și este executat miliarde de ori, ar putea face o mare diferență.

Cunoașterea acestor doi noi operatori logici VB .NET vă poate ajuta să evitați erori foarte subtile sau să obțineți eficiențe subtile.