VB.NET har två logiska operatörer som hjälper till att göra din programmering ... tja ... mer logisk. De nya operatörerna är Och även och Annars och de lägger mycket till de gamla And- och Or-operatörerna.
AndAlso och OrElse har vissa egenskaper som förbättrar din kod på sätt som tidigare VB-versioner inte kunde matcha. De erbjuder fördelar i två allmänna kategorier:
AndAlso och OrElse är ganska mycket som And och Or förutom att de kommer att "kortsluta" ett uttryck när resultatet är garanterat.
Anta att du kodar ett test av ett beräkningsresultat som detta:
If-uttrycket genererar ett "divide by zero" -fel i VB 6 eftersom Value3 är noll. (Men se Snabbtippet om dividera med noll för mer om det.) Det kan vara så att de fall som resulterar i att Value3 är noll är mycket sällsynta och endast inträffar när du njuter av en semester tusen mil bort så att du kan kallas tillbaka för att fixa programmet i ett nödläge. (Hej! Det händer!)
Låt oss koda om programmet som ett .NET-program med AndAlso och se vad som händer.
Efter att ha bytt till AndAlso fungerar programmet! Anledningen är att den sista delen av föreningen Om villkor- (värde 2 \ värde3)-egentligen aldrig körs. När du använder AndAlso vet VB.NET att uttrycket inte kan lyckas när det har fastställts att den första delen av villkoret-a inte är större än Value1-är falskt. Så VB.NET slutar utvärdera uttrycket där. Ett liknande exempel kan konstrueras med hjälp av OrElse.
Denna analys föreslår också hur du kan lägga till lite effektivitet i din kod genom att ordna ett sammansatt logiskt uttryck korrekt. Om du placerar det uttryck som troligtvis är falskt i positionen längst till vänster när du använder AndAlso, kan du förhindra att exekveringscykler används för att utvärdera det längst till höger. I ett enda test skulle det inte göra tillräckligt stor skillnad för att vara värt att ens tänka på. Men om ditt test är inne i en slinga av något slag och utförs zilljoner gånger, kan det göra en stor skillnad.
Att känna till dessa två nya VB .NET-logiska operatörer kan hjälpa dig att undvika mycket subtila fel eller uppnå subtila effektivitet.