CodeBlanks Logo Icon CodeBlanks

Pattern matching

C# kursu · Başlangıç · Ders 39/116

switch ifadeleri ve tip kalıpları ile modern C# koşullarını öğrenirsin.

Pattern matching

Modern C#, switch ifadesi (switch expression) ile koşullu değer üretmeyi sağlar. var label = day switch { 1 => "pazartesi", 2 => "salı", _ => "?" }; tek satırda sonuç verir.

Alt çizgi _ 'diğer tüm durumlar' anlamına gelir; default'un ifadedeki karşılığıdır. Bu yapı özellikle bir değeri başka bir değere eşlerken çok okunaklıdır ve klasik switch deyiminin yerini alır.

Tip kalıpları ve when

Switch ifadeleri yalnızca sabitlerle değil, tip kalıplarıyla da çalışır. shape switch { Circle c => Math.PI * c.R * c.R, Square s => s.S * s.S, _ => 0 } nesnenin türüne göre doğru dalı seçer ve değişkene ad verir.

Daha ince ayar için when yan koşulu eklersin: int n when n > 0 => "pozitif". Böylece hem tip hem ek koşul tek dalda birleşir; kod karmaşık dalları bile sade yazar.

Uygulama Switch ifadesiyle gün adı

Bir day değişkenini 2 değeriyle tanımla. Switch ifadesi kullanarak name değişkenini üret: 1 => "pazartesi", 2 => "salı", _ => "bilinmiyor". Sonra name'i Console.WriteLine ile yazdır.

Örnek çözümü göster
string name = day switch { 1 => "pazartesi", 2 => "salı", _ => "bilinmiyor" }; yaz.
Örnek çözüm:
using System;

class Program
{
    static void Main()
    {
        int day = 2;
        string name = day switch { 1 => "pazartesi", 2 => "salı", _ => "bilinmiyor" };
        Console.WriteLine(name);
    }
}

Kendini test et

  1. switch ifadesinde 'diğer tüm durumlar' ne ile gösterilir?

    var label = day switch { 1 => "bir", _ => "?" };
    • default
    • else
    • *
    • _ (alt çizgi)
    Cevabı göster

    _ (alt çizgi) — Doğru. _ (discard pattern) tüm diğer durumları yakalar.

  2. Switch ifadesi parçasını anlamına eşle

    switch
    Değeri alır
    =>
    Sonuç üretir
    _
    Diğer tüm durumlar
    ;
    İfadeyi bitirir
  3. Sonuç okunu yaz

    string label = day switch { 1 ____ "pazartesi", _ => "?" };
    Cevabı göster
    string label = day switch { 1 => "pazartesi", _ => "?" };

Başlangıç bölümündeki tüm dersler