Expresia if generează o eroare "divide cu zero" în VB 6 deoarece Value3 este zero. (Dar vezi Sfat rapid pentru împărțirea la zero pentru mai multe despre asta.) S-ar putea ca cazurile care au ca rezultat Valoarea 3 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 chemat înapoi pentru a repara programul în caz de urgență Mod. (Hei! S-a întâmplat!)
După schimbarea Și la AndAlso, programul funcționează! Motivul este că ultima parte a compusului If condiție - (valoarea 2 \ value3) - nu este niciodată executată. 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ă. Deci 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ță.