switch İfadeleri
Değer döndüren özlü switch ifadeleri.
switch İfadeleri, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
switch İfadesi Nedir
Bir switch ifadesi, bir girdiyi bir dizi desene göre değerlendirir ve bir değer döndürür. Klasik switch deyiminden farklı olarak bu yapı bir ifadedir; dolayısıyla atayabileceğiniz veya döndürebileceğiniz bir sonuç üretir.
Değerden sonra switch anahtar sözcüğünü kullanır; kollar pattern => result biçiminde yazılır. Bu, dallanma mantığını kısa ve işlevsel hâle getirir.
int code = 2;
string name = code switch
{
1 => "One",
2 => "Two",
_ => "Other"
};
System.Console.WriteLine(name);Deyim ve İfade Karşılaştırması
Eski switch deyimi case etiketlerini ve break kullanır. Yeni switch ifadesi ise bu anahtar sözcükleri tamamen kaldırır.
Kollar virgüllerle ayrılır, yapının tamamı noktalı virgülle biter ve her kol, sonraki bloklara otomatik geçiş yapmak yerine bir değer üretir. Böylece çıkış komutunun unutulmasından kaynaklanan bir hata sınıfı ortadan kalkar.
// Statement style
switch (code) { case 1: result = "One"; break; }
// Expression style
result = code switch { 1 => "One", _ => "?" };Yok Sayma Kolu
Alt çizgi _, yok sayma desenidir. Her şeyle eşleşir ve varsayılan durum görevi görür.
Switch ifadeleri tüm durumları kapsamalıdır: çalışma zamanında hiçbir kol eşleşmezse SwitchExpressionException fırlatılır. Bir _ kolu eklemek, olası her girdi için eşleşme olmasını garanti eder.
using System;
class Program {
static void Main() {
int n = 7;
string size = n switch {
< 5 => "small",
_ => "big"
};
Console.WriteLine(size);
}
}Sabit Desenleri
En basit kol, bir sabit deseni kullanır: girdinin eşitlik karşılaştırmasıyla karşılaştırıldığı, doğrudan yazılmış bir değer.
Sabitler sayılar, dizeler, karakterler, numaralandırma üyeleri veya adlandırılmış sabitler olabilir. Yukarıdan aşağıya değerlendirilirler; bu nedenle en özel veya en sık kullanılan kolları önce sıralayın.
char grade = 'B';
string label = grade switch
{
'A' => "Excellent",
'B' => "Good",
'C' => "Fair",
_ => "Needs work"
};
System.Console.WriteLine(label);Bir Yöntemden Değer Döndürme
Switch ifadeleri yöntemlerin içinde özellikle kullanışlıdır. Yapının tamamı bir ifade olduğundan, onu doğrudan return ile döndürebilir ve çoğu zaman tek satırlık, gövdesi ifade olan bir yöntem yazabilirsiniz.
Bu, eşleme mantığını gövde boyunca dağılmış if/else if zincirleri yerine okunabilir ve merkezi tutar.
using System;
class Program {
static string Day(int d) => d switch {
0 => "Sun", 6 => "Sat", _ => "Weekday"
};
static void Main() => Console.WriteLine(Day(6));
}Numaralandırmalar Üzerinde switch Kullanımı
Numaralandırmalar switch ifadeleriyle doğal biçimde birlikte kullanılır. Her kol bir numaralandırma üyesini belirtir; yok sayma kolunu eklemezseniz derleyici eksik bir durum olduğunda uyarı verebilir.
Yine de gelecekte eklenen numaralandırma değerlerinin uygulamanızın çalışma zamanında çökmesine neden olmaması için bir _ kolu bulundurmanız akıllıca olur.
using System;
enum Light { Red, Yellow, Green }
class Program {
static void Main() {
Light l = Light.Green;
string action = l switch {
Light.Red => "Stop",
Light.Yellow => "Slow",
Light.Green => "Go",
_ => "?"
};
Console.WriteLine(action);
}
}when ile Koruma Koşulları
Bir when koruması, bir kola boole koşulu ekler. Kol yalnızca hem desen hem de koruma doğruysa eşleşir.
Bu, yalnızca bir desenle ifade edilemeyen aralık denetimleri ile diğer değişkenleri birleştirmek gibi, eşleşmeleri rastgele mantıkla ayrıntılandırmanıza olanak tanır.
int temp = 30;
string weather = temp switch
{
int t when t < 0 => "Freezing",
int t when t < 20 => "Cool",
_ => "Warm"
};
System.Console.WriteLine(weather);Sıra Önemlidir
Kollar kaynak kodundaki sıraya göre sınanır. İlk eşleşen kol kazanır; bu nedenle daha özel desenler daha genel desenlerden önce gelmelidir.
Genel bir kol özel bir koldan önce gelirse derleyici, sonraki kolun erişilemez olduğunu bildirir. Kollarınızı dar olandan geniş olana ilerleyen bir huni gibi yukarıdan aşağıya okuyun.
int score = 95;
string tier = score switch
{
>= 90 => "Gold",
>= 70 => "Silver",
_ => "Bronze"
};
System.Console.WriteLine(tier);Tüm Durumları Kapsama ve Özel Durumlar
Her girdi kapsanmıyorsa ve hiçbir kol eşleşmiyorsa çalışma zamanı System.Runtime.CompilerServices.SwitchExpressionException fırlatır.
Derleyici, tüm durumların kapsandığını kanıtlayamadığında CS8509 uyarısını üretir. Bu uyarıyı ciddiye alın: ifadenin tüm girdeler için sonuç üretmesini sağlamak üzere bir yok sayma kolu ekleyin veya eksik değerleri kapsayın.
using System;
class Program {
static void Main() {
try {
int x = 5;
string s = x switch { 1 => "a", 2 => "b" };
Console.WriteLine(s);
} catch (Exception e) {
Console.WriteLine(e.GetType().Name);
}
}
}Birden Çok Girdiyi Birleştirme
Birden fazla değer üzerinde switch kullanmak için değerleri bir demetin içine sarın. Böylece kollar, her konumu karşılaştıran demet desenleriyle eşleşir.
Bu yaklaşım, sonucun iki etkene bağlı olduğu durum makineleri veya karar tabloları için idealdir. Demet desenlerini sonraki bir derste ayrıntılı olarak inceleyeceğiz.
bool isWeekend = true; bool isRaining = false;
string plan = (isWeekend, isRaining) switch
{
(true, false) => "Go hiking",
(true, true) => "Watch a movie",
_ => "Work"
};
System.Console.WriteLine(plan);Okunabilir İfade Gövdeleri
Switch ifadeleri LINQ ve gövdesi ifade olan üyelerle iyi bir şekilde birleşerek kısa işlem hatları oluşturur.
Her kol bir değer döndürdüğü için bir switch ifadesini doğrudan Select projeksiyonunun içinde veya yöntem bağımsız değişkeni olarak kullanabilir ve geçici değişkenlerden kaçınabilirsiniz.
using System;
using System.Linq;
class Program {
static void Main() {
var nums = new[] { 1, 2, 3 };
var labels = nums.Select(n => n switch {
1 => "one", 2 => "two", _ => "many"
});
Console.WriteLine(string.Join(",", labels));
}
}Kısa Sınama
Switch ifadeleriyle ilgili anlayışınızı sınayın.
Özet
Switch ifadeleri, virgüllerle ayrılmış kollar içeren input switch { pattern => result, ... } yapısıyla bir değer döndürür.
Varsayılan durum için _, korumalar için when kullanın ve kolların yukarıdan aşağıya sınandığını unutmayın. Çalışma zamanındaki özel durumlardan kaçınmak için tüm durumları kapsayın. Sırada tür ve özellik desenlerini inceleyeceğiz.
Sıkça Sorulan Sorular
“switch İfadeleri” dersi ücretsiz mi?
Evet — “switch İfadeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“switch İfadeleri” dersinde ne öğreneceğim?
Değer döndüren özlü switch ifadeleri. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“switch İfadeleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.