VB.NET loginiai operatoriai AndAlso ir OrElse
Šis trumpas patarimas parodo, ką jie gali padaryti

Juhari Muhade / Getty Images
VB.NET turi du loginius operatorius, kurie padeda padaryti jūsų programavimą ... gerai ... logiškesnį. Nauji operatoriai yra Ir taip pat ir Arba ir jie daug prideda seniesiems And ir Or operatoriams.
Kas naujo
„AndAlso“ ir „OrElse“ turi tam tikrų savybių, kurios pagerina jūsų kodą taip, kad ankstesnės VB versijos negalėjo atitikti. Jie siūlo dvi pagrindines kategorijas:
- Galite nevykdyti dalies loginės išraiškos, kad išvengtumėte problemų.
- Galite optimizuoti kodą nevykdydami daugiau sudėtinės išraiškos, nei reikia.
„AndAlso“ ir „OrElse“ yra labai panašūs į „And“ ir „Or“, išskyrus tai, kad jie „sutrumpins“ išraišką, kai bus garantuotas rezultatas.
Pavyzdys
Tarkime, kad užkoduojate tokio skaičiavimo rezultato testą:
Jei išraiška generuoja klaidą „padalyti iš nulio“ VB 6, nes 3 reikšmė yra nulis. (Bet žiūrėkite Greitas patarimas, kaip padalinti iš nulio Daugiau apie tai.) Gali būti, kad atvejai, kai „Value3“ yra nulis, yra labai reti ir pasitaiko tik tada, kai mėgaujatės atostogomis už tūkstančio mylių, todėl jums gali būti paskambinta, kad ištaisytumėte programą avariniu režimu. (Ei! Taip atsitinka!)
Perkoduokime programą į .NET programą naudodami AndAlso ir pažiūrėkime, kas atsitiks.
Pakeitus Ir į AndAlso, programa veikia! Priežastis ta, kad paskutinė sudėtinio If sąlygos dalis (reikšmė 2 reikšmė3) niekada nėra iš tikrųjų vykdoma. Kai naudojate AndAlso, VB.NET žino, kad išraiška negali būti sėkminga, kai nustatoma, kad pirmoji sąlygos dalis – a ne didesnė už 1 reikšmę – yra klaidinga. Taigi VB.NET nustoja vertinti išraišką čia pat. Panašus pavyzdys gali būti sukurtas naudojant OrElse.
Ši analizė taip pat siūlo, kaip galite padidinti kodo efektyvumą, teisingai išdėstydami sudėtinę loginę išraišką. Jei reiškinį, kuris greičiausiai yra klaidingas, įdedate į kairiausią poziciją, kai naudojate AndAlso, galite neleisti, kad vykdymo ciklai būtų naudojami dešiniajai išraiškai įvertinti. Atliekant vieną testą, tai neturėtų tiek skirtumo, kad būtų verta net pagalvoti. Bet jei jūsų testas yra tam tikros rūšies kilpoje ir atliekamas daugybę kartų, tai gali turėti didelį skirtumą.
Žinodami apie šiuos du naujus VB .NET loginius operatorius galite išvengti labai subtilių klaidų arba pasiekti subtilaus efektyvumo.