0Pricing
C# Academy · Lekcja

Wzorce relacyjne i logiczne

Połączy Pan/Pani warunki we wzorcach.

Wzorce relacyjne i logiczne to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.

Wzorce relacyjne

Wzorzec relacyjny porównuje dane wejściowe ze stałą za pomocą operatora <, >, <= lub >=. Dopasowuje się, gdy porównanie jest prawdziwe.

Wprowadzone w C# 9 wzorce relacyjne upraszczają sprawdzanie zakresów w ramionach switch i wyrażeniach is, bez konieczności zapisywania jawnych porównań.

int temp = 18;
string level = temp switch
{
    < 0  => "freezing",
    < 15 => "cold",
    < 25 => "mild",
    _    => "hot"
};
System.Console.WriteLine(level);

Wzorce relacyjne z is

Wzorce relacyjne działają także w wyrażeniach is, zapewniając czytelne testy logiczne.

n is > 0 niemal przypomina język naturalny i zwraca wartość bool, której można używać w warunkach, przypisaniach lub predykatach LINQ.

using System;

class Program {
    static void Main() {
        int score = 82;
        bool passed = score is >= 60;
        Console.WriteLine(passed);
    }
}

Wzorzec and

Wzorzec logiczny and wymaga dopasowania obu podwzorców. Doskonale nadaje się do określania ograniczonych zakresów.

>= 1 and <= 12 dopasowuje wartości należące do zakresu domkniętego. Bez and wyrażenie dwustronnych ograniczeń w jednym wzorcu byłoby niemożliwe.

int month = 6;
bool valid = month is >= 1 and <= 12;
System.Console.WriteLine(valid);

Wzorzec or

Wzorzec logiczny or dopasowuje się, gdy pasuje którykolwiek z podwzorców. Grupuje alternatywne wartości w jednym ramieniu.

Zamiast powtarzać ramiona dla powiązanych przypadków, konstrukcja 'a' or 'e' or 'i' łączy je w jedną całość. Dzięki temu wyrażenia switch są zwięzłe i jasno pokazują intencję.

char c = 'e';
string kind = c switch
{
    'a' or 'e' or 'i' or 'o' or 'u' => "vowel",
    _ => "consonant"
};
System.Console.WriteLine(kind);

Wzorzec not

Wzorzec logiczny not dopasowuje się, gdy jego podwzorzec nie pasuje. Najczęstsze zastosowanie to not null.

Można nim także negować inne wzorce, na przykład not 0 lub not (> 100), aby jasno wyrażać wykluczenia w jednym ramieniu.

object? value = "hi";
if (value is not null)
    System.Console.WriteLine("present");

Łączenie wzorców logicznych

Wzorce logiczne można łączyć. Można zestawiać and, or i not, tworząc rozbudowane warunki, a nawiasów używać do kontrolowania kolejności wiązania.

Priorytet operatorów jest następujący: not wiąże najsilniej, następnie and, a na końcu or. Należy dodawać nawiasy zawsze, gdy intencja może być niejednoznaczna.

using System;

class Program {
    static string Classify(int n) => n switch {
        < 0 or > 100 => "out of range",
        >= 0 and <= 50 => "low half",
        _ => "high half"
    };
    static void Main() => Console.WriteLine(Classify(75));
}

Zakresy w ocenianiu

Wzorce relacyjne i logiczne razem pozwalają przejrzyście modelować klasyczne tabele ocen.

Ponieważ ramiona są sprawdzane od góry do dołu, można używać prostych górnych ograniczeń albo łączyć ograniczenia za pomocą and, aby jawnie określać zakresy. Oba style są poprawne — należy wybrać ten czytelniejszy.

using System;

class Program {
    static char Grade(int s) => s switch {
        >= 90 => 'A',
        >= 80 and < 90 => 'B',
        >= 70 and < 80 => 'C',
        _ => 'F'
    };
    static void Main() => Console.WriteLine(Grade(85));
}

not null ze wzorcami właściwości

Połączenie not null ze wzorcami typu i właściwości tworzy bezpieczne i wyraziste warunki.

obj is Person { Name: not null } p dopasowuje niepusty obiekt Person, którego właściwość Name również nie jest równa null, i wiąże go ze zmienną. Pozwala to uniknąć kaskady sprawdzeń wartości null.

record Person(string? Name);

object obj = new Person("Kai");
if (obj is Person { Name: not null } p)
    System.Console.WriteLine(p.Name);

Negowanie zakresów

Za pomocą not i nawiasów można zanegować grupę relacyjną, aby wyrazić wykluczenia.

not (>= 1 and <= 5) dopasowuje wszystko spoza zakresu od 1 do 5. Dla niektórych czytelników zapis ten jest bardziej bezpośredni niż równoważne wyrażenie < 1 or > 5.

using System;

class Program {
    static void Main() {
        int n = 9;
        bool outside = n is not (>= 1 and <= 5);
        Console.WriteLine(outside);
    }
}

Łączenie ze wzorcami typów

Wzorce logiczne można łączyć także ze wzorcami typów. o is int or long dopasowuje typy całkowite w jednym sprawdzeniu.

Jest to przydatne, gdy kilka powiązanych typów ma być traktowanych jednolicie. Należy pamiętać, że obie strony or muszą być zgodne ze sposobem użycia wyniku.

object o = 5L;
string kind = o switch
{
    int or long => "integral",
    float or double => "floating",
    _ => "other"
};
System.Console.WriteLine(kind);

Wytyczne dotyczące czytelności

Wzorce logiczne są wyraziste, ale mogą stać się zbyt złożone. Należy utrzymywać krótkie ramiona, preferować zakresy z użyciem and oraz stosować nawiasy przy łączeniu and/or, aby zachować czytelność.

Gdy warunek wymaga wielu klauzul lub zmiennych zewnętrznych, strażnik when może być czytelniejszy niż długi wzorzec logiczny. Należy wybrać rozwiązanie, które lepiej komunikuje intencję.

int n = 42;
string r = n switch
{
    > 0 and < 10 when n % 2 == 0 => "small even",
    _ => "other"
};
System.Console.WriteLine(r);

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat wzorców relacyjnych i logicznych.

Podsumowanie

Wzorce relacyjne (< > <= >=) porównują wartość ze stałymi. Wzorce logiczne łączą podwzorce za pomocą and, or i not.

Priorytet operatorów jest następujący: not, następnie and, a na końcu or; przy ich łączeniu należy stosować nawiasy. Następnie omówimy wzorce list i krotek.

Często zadawane pytania

Czy lekcja „Wzorce relacyjne i logiczne” jest bezpłatna?

Tak — pełny tekst „Wzorce relacyjne i logiczne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wzorce relacyjne i logiczne”?

Połączy Pan/Pani warunki we wzorcach. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Wzorce relacyjne i logiczne”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wyrażenia switch
  2. Wzorce typów i właściwości
  3. Wzorce relacyjne i logiczne
  4. Wzorce list i krotek
← Powrót do C# Academy