Ewaluacja z krótkim spięciem
Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 36 z 66.
Ewaluacja zwarciowa to technika optymalizacji w C#, w której drugi operand operatorów logicznych AND (&&) i OR (||) jest obliczany tylko wtedy, gdy jest to konieczne.
W przypadku logicznego AND (&&), jeśli pierwszy operand ma wartość false, wynik zawsze będzie miał wartość false, niezależnie od drugiego operandu:
bool result = false && SomeMethod();W tym przykładzie SomeMethod() nie zostanie wywołana, ponieważ pierwszy operand ma już wartość false.
W przypadku logicznego OR (||), jeśli pierwszy operand ma wartość true, wynik zawsze będzie miał wartość true, niezależnie od drugiego operandu:
bool result = true || SomeMethod();Tutaj SomeMethod() nie zostanie wywołana, ponieważ pierwszy operand ma już wartość true.
To zachowanie można wykorzystać do zapobiegania błędom, na przykład sprawdzając, czy obiekt ma wartość null, zanim uzyskasz dostęp do jego właściwości:
// Bezpieczne — jeśli student ma wartość null, prawa strona nie zostanie obliczona
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}Wyzwanie
ŁatwyUtwórz metodę o nazwie ProcessUserInput, która przyjmuje dwa argumenty:
- Ciąg znaków (
input) - Liczbę całkowitą (
minLength)
Metoda powinna:
- Sprawdzić, czy wartość
inputnie jest równa null - Sprawdzić, czy długość wartości
inputwynosi co najmniejminLength - Tylko jeśli oba warunki są spełnione, wypisać "Valid input: " i wartość
input - Jeśli którykolwiek z warunków nie jest spełniony, wypisać "Invalid input"
Użyj ewaluacji zwarciowej, aby zapobiec potencjalnemu NullReferenceException.
Spróbuj swoich sił
using System;
class ProcessUserInput
{
public static void processUserInput(string input, int minLength)
{
// Wpisz tutaj swój kod
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i sterowanie przepływem
1Tablice wielowymiarowe
Podstawy tablic 2DDeklarowanie i inicjalizacja tablic 2DDostęp do elementów tablic 2DZagnieżdżone pętle z tablicami 2DTablice postrzępionePodstawowe operacje na macierzachPodsumowanie — tablice wielowymiarowe4Techniki sterowania przepływem
Wczesne zwrotyKlauzule ochronneInstrukcje skoku (goto)Break i continueSpłaszczanie zagnieżdżonych warunków7Zaawansowane operatory logiczne
Ewaluacja z krótkim spięciemWarunkowe operatory logicznePriorytet operatorówPowtórzenie — zaawansowane operatory2Zaawansowane podejmowanie decyzji
Wiele warunkówZłożona logika Boole’aPorównanie if i switchZagnieżdżone instrukcje switchPodsumowanie — zaawansowane decyzje5Obsługa wyjątków
Podstawy try-catchTypy wyjątkówWiele bloków catchPraca z plikamiBlok finallyusing a try-finallyWłasne wyjątkiPowtórzenie — obsługa błędów3Udoskonalenia pętli
Wydajność pętliIterowanie po złożonych strukturachKażdy typ pętliRefaktoryzacja pętliPodsumowanie — zoptymalizowane pętle6Obsługa wartości null
Podstawy referencji nullTypy wartości dopuszczające nullWzorce sprawdzania nullProgramowanie defensywnePodsumowanie — bezpieczeństwo nullPoćwicz samodzielnie: Kompilator C# online