Pattern matching
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
-
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.
-
Switch ifadesi parçasını anlamına eşle
- switch
- Değeri alır
- =>
- Sonuç üretir
- _
- Diğer tüm durumlar
- ;
- İfadeyi bitirir
-
Sonuç okunu yaz
string label = day switch { 1 ____ "pazartesi", _ => "?" };Cevabı göster
string label = day switch { 1 => "pazartesi", _ => "?" };