VB.NET's logische operatoren AndOls en OrElse

VB.NET beschikt over twee logische operatoren die uw programmering helpen ... nou ja ... logischer. De nieuwe operatoren zijn En ook en Of anders en ze voegen veel toe aan de oude And- en Of-operators.

Wat is er nieuw

AndAlso en OrElse hebben enkele eigenschappen die uw code verbeteren op manieren die eerdere VB-versies niet konden evenaren. Ze bieden voordelen in twee algemene categorieën:

  • U kunt voorkomen dat u een deel van een logische uitdrukking uitvoert om problemen te voorkomen.
  • U kunt de code optimaliseren door niet meer van een samengestelde expressie uit te voeren dan vereist.

AndOok en OrElse zijn vrijwel hetzelfde als En en of behalve dat ze een uitdrukking "kortsluiten" zodra de uitkomst is gegarandeerd.

Voorbeeld

Stel dat u een test van een berekeningsresultaat als volgt codeert:

De if-expressie genereert een fout "delen door nul" in VB 6 omdat Value3 nul is. (Maar zie de Quick Tip over delen door nul voor meer informatie.) Het kan zijn dat de gevallen die ervoor zorgen dat Value3 nul is, zeer zeldzaam zijn en alleen optreden wanneer u geniet van een vakantie op duizend mijl afstand, zodat u gebeld kunt worden terug om het programma in een noodmodus te repareren. (Hé! Het gebeurt!)

Laten we het programma opnieuw coderen als een .NET-programma met AndAlso en kijken wat er gebeurt.

Na het veranderen van And in AndAlso, werkt het programma! De reden is dat het laatste deel van de samengestelde If-voorwaarde (waarde 2 \ waarde3) nooit daadwerkelijk wordt uitgevoerd. Wanneer u AndAlso gebruikt, weet VB.NET dat de uitdrukking niet kan slagen als eenmaal is vastgesteld dat het eerste deel van voorwaarde-a niet groter is dan Waarde1-onwaar is. Dus stopt VB.NET met het evalueren van de uitdrukking daar. Een vergelijkbaar voorbeeld zou kunnen worden geconstrueerd met behulp van OrElse.

Deze analyse suggereert ook hoe u wat efficiëntie aan uw code kunt toevoegen door een samengestelde logische expressie correct te rangschikken. Als u de uitdrukking die het meest waarschijnlijk onwaar is, in de meest linkse positie plaatst wanneer u AndAlso gebruikt, kunt u voorkomen dat uitvoeringscycli worden gebruikt om de meest rechtse uitdrukking te evalueren. In een enkele test zou het niet genoeg verschil maken om de moeite waard te zijn om zelfs maar aan te denken. Maar als uw test zich in een lus bevindt en duizenden keren wordt uitgevoerd, kan dit een groot verschil maken.

Kennis van deze twee nieuwe VB .NET logische operatoren kan u helpen zeer subtiele fouten te voorkomen of subtiele efficiëntie te bereiken.