Operatory logiczne VB.NET AndAlso i OrElse
Ta szybka wskazówka pokazuje, co mogą zrobić
Juhari Muhade / Getty Images
VB.NET zawiera dwa operatory logiczne, które pomagają uczynić Twoje programowanie ... cóż ... bardziej logicznym. Nowi operatorzy są I również oraz Albo i dodają wiele do starych operatorów And i Or.
Co nowego
AndAlso i OrElse mają pewne właściwości, które ulepszają Twój kod w sposób, w jaki poprzednie wersje VB nie mogły się dopasować. Oferują zalety w dwóch ogólnych kategoriach:
- Możesz uniknąć wykonywania części wyrażenia logicznego, aby uniknąć problemów.
- Możesz zoptymalizować kod, nie wykonując więcej wyrażenia złożonego niż jest to wymagane.
AndAlso i OrElse są bardzo podobne do And i Or, z tą różnicą, że skrócą wyrażenie, gdy wynik zostanie zagwarantowany.
Przykład
Załóżmy, że kodujesz test wyniku obliczenia w następujący sposób:
Wyrażenie if generuje błąd „dzielenia przez zero” w VB 6, ponieważ Wartość3 wynosi zero. (Ale zobacz Szybka wskazówka dotycząca dzielenia przez zero Więcej informacji na ten temat.) Może się zdarzyć, że przypadki, w których wartość 3 wynosi zero, są bardzo rzadkie i występują tylko wtedy, gdy spędzasz wakacje oddalone o tysiąc mil, więc możesz zostać wezwany z powrotem, aby naprawić program w trybie awaryjnym. (Hej! To się zdarza!)
Przekodujmy program jako program .NET przy użyciu AndAlso i zobaczmy, co się stanie.
Po zmianie A na AndRównież program działa! Powodem jest to, że ostatnia część złożonego warunku If — (wartość 2 wartość3) — nigdy nie jest faktycznie wykonywana. Gdy używasz AndAlso, VB.NET wie, że wyrażenie nie może się powieść, gdy zostanie ustalone, że pierwsza część warunku — a nie jest większa niż Value1 — jest fałszywa. Więc VB.NET przestaje oceniać wyrażenie właśnie tam. Podobny przykład można skonstruować za pomocą OrElse.
Ta analiza sugeruje również, w jaki sposób można zwiększyć wydajność kodu poprzez prawidłowe ułożenie złożonego wyrażenia logicznego. Jeśli umieścisz wyrażenie, które najprawdopodobniej będzie fałszywe, na skrajnej lewej pozycji podczas korzystania z funkcji AndAlso, możesz zapobiec używaniu cykli wykonywania do oceny wyrażenia znajdującego się najbardziej po prawej stronie. W pojedynczym teście nie zrobiłoby to na tyle dużej różnicy, żeby warto było o tym myśleć. Ale jeśli twój test znajduje się w jakiejś pętli i jest wykonywany miliony razy, może to zrobić dużą różnicę.
Znajomość tych dwóch nowych operatorów logicznych VB .NET może pomóc uniknąć bardzo subtelnych błędów lub osiągnąć subtelną wydajność.