Altbilgi içeriğine atla
Iron Academy Logo
C# Öğrenin
C# Öğrenin

Diğer Kategoriler

C# Switch İfadesi Açıklanıyor: Tim Corey'den Pratik Bir Rehber

Tim Corey
9m 16s

C# geliştirme dünyasında, temiz ve sürdürülebilir kod yazma bir ana hedeftir. Bunu başarmaya yardımcı olan bir modern C# özelliği, geleneksel switch ifadesine kompakt ve güçlü bir alternatif olan switch ifadesidir. Genellikle göz ardı edilse de, switch ifadeleri, özellikle ilişkisel kalıplarla, desen eşleme ve sabit kalıplarla uğraşırken karmaşık dallanma mantığını basitleştirir.

Bu özelliğin nasıl çalıştığını ve geleneksel yaklaşımlarla nasıl karşılaştırıldığını daha iyi anlamak için, Tim Corey'nin faydalı bir videosunu inceleyeceğiz. C#'da "Switch İfadeleri" adlı videosunda, Tim, C#'da switch ifadelerinin gerçek dünya kullanımlarını ayrıntılı bir şekilde ele alarak, daha az satırla daha iyi kod yazmayı göstermektedir.

Tim'in pratik açıklamasına dalalım, bu başlangıçta bir not verme örneği ile başlar ve arayüzler, tür kalıpları ve nesne değerlendirmesi kullanarak daha gelişmiş senaryolara doğru ilerler.

Geleneksel If-Else vs. Switch İfadesi

Tim, bir test notunu (örneğin 85) tutan, numberGrade adlı bir int değişkeninin bulunduğu bir konsol uygulamasıyla başlar. Amaç bu sayısal giriş değerini, 'B' gibi karşılık gelen bir harf notuna çevirmektir. Çoğu durumda, geliştiriciler bir dizi if-else ifadesi veya bir switch ifadesi kullanırlardı, bu şekilde:

if (numberGrade >= 90)
    letterGrade = "A";
else if (numberGrade >= 80)
    letterGrade = "B";
// ...and so on
if (numberGrade >= 90)
    letterGrade = "A";
else if (numberGrade >= 80)
    letterGrade = "B";
// ...and so on

Bu işe yarıyor olsa da, oldukça uzun. Öte yandan C# switch ifadeleri daha temiz bir sözdizimi sunar.

Not Verme İçin Bir Switch İfadesi Yazma

Bir switch ifadesini göstermek için, Tim yukarıdaki mantığı şu kodu kullanarak yeniden yazıyor:

string letterGrade = numberGrade switch
{
    >= 90 => "A",
    >= 80 => "B",
    >= 70 => "C",
    >= 60 => "D",
    _ => "F"
};
string letterGrade = numberGrade switch
{
    >= 90 => "A",
    >= 80 => "B",
    >= 70 => "C",
    >= 60 => "D",
    _ => "F"
};

Burada, switch anahtar kelimesi bir ifade olarak—bir ifade olarak değil, bir durum bildirimi olarak kullanılır. Bu, doğrudan bir değere dönüştüğü ve bir değişkene (letterGrade gibi) atanabileceği anlamına gelir.

Bu form, ilişkisel kalıpları (örneğin >= 90) destekler ve varsayılan durumu işlemek için yok sayma kalıbını (_) kullanır, bu da sonrasındaki else'e eşdeğerdir.

Tim, derleyicinin çalışma zamanında eşleşmeyi belirlediğini, her koşulun yukarıdan aşağıya kontrol edildiğini ve girdiyle uyumlu olan ilk deseni seçtiğini belirtiyor.

İfadelerle Kodu Basitleştirme

Tim'in sözleriyle, bu yeni sözdizimi 'bir sürü kodun yerine geçiyor.' Else if ile koşulları tekrarlamak yerine, switch ifadesi her şeyi net, öz bir yapıda ele alır. Bu, kontrol akışını basitleştirir, okunabilirliği artırır ve mantığınızdaki tekrarları azaltır.

Bu yapının, giriş değerlerinin belirli çıktılara haritalanması gereken durumlarda—örneğin notlandırma, durum mesajları veya veri dönüşümleri gibi—özellikle yararlı olduğunu vurguluyor.

Obje Türleri ile Desen Eşleştirme

Tür desenlerini ve desen eşleştirme konusunu incelemek için Tim, bir IAnimal arayüzünü içeren bir senaryo tanıtıyor. Üç sınıf tanımlar—Dog, Cat ve Cow—her biri arayüzü uygular. Bu, ona farklı özelliklere sahip hayvanların bir listesini oluşturma imkanı verir.

interface IAnimal { }

record Dog(string Name) : IAnimal;
record Cat(string Title, string Name) : IAnimal;
record Cow(string Breed) : IAnimal;
interface IAnimal { }

record Dog(string Name) : IAnimal;
record Cat(string Title, string Name) : IAnimal;
record Cow(string Breed) : IAnimal;

Çeşitli hayvan örnekleri ile bir liste doldurur ve tür desen eşleştirmeyi kullanarak nesne türünü belirlemeyi ve veriyi çıkarmayı nasıl yapacağını gösterir.

Desen Eşleştirme ile Switch İfadesi

Tim, aşağıdaki if ifadelerini kullanan kodu gösterir:

if (a is Dog d)
    message = $"Dog: {d.Name}";
else if (a is Cat c)
    message = $"Cat: {c.Title} {c.Name}";
else if (a is Cow co)
    message = $"Cow: {co.Breed}";
else
    message = "Unknown animal";
if (a is Dog d)
    message = $"Dog: {d.Name}";
else if (a is Cat c)
    message = $"Cat: {c.Title} {c.Name}";
else if (a is Cow co)
    message = $"Cow: {co.Breed}";
else
    message = "Unknown animal";

Daha kompakt ve okunabilir bir switch ifadesiyle değiştirebilir:

string message = a switch
{
    Dog d => $"Dog: {d.Name}",
    Cat c => $"Cat: {c.Title} {c.Name}",
    Cow co => $"Cow: {co.Breed}",
    _ => "Unknown animal"
};
string message = a switch
{
    Dog d => $"Dog: {d.Name}",
    Cat c => $"Cat: {c.Title} {c.Name}",
    Cow co => $"Cow: {co.Breed}",
    _ => "Unknown animal"
};

Bu ifade, nesnenin türünü kontrol eder ve eşleşen desene göre doğru çıktıyı uygular. Eğer eşleşme bulunamazsa, varsayılan bir sonuca geri döner ve bu durumda (_) kullanılır.

Bu özellik, netliği bozmadan işlevselliği artırır. Çalışma zamanı davranışı öngörülebilir ve okunabilir kalır.

When Anahtar Kelimesi ile Opsiyonel Koruyucular

Tim'in örneğinde gösterilmese de, switch ifadelerinin when anahtar kelimesi ile opsiyonel bir boole koşulu uygulayacak şekilde genişletilebileceğini belirtmek önemlidir:

int score = 90;

string result = score switch
{
    int s when s >= 90 && s <= 100 => "Excellent",
    int s when s >= 75 => "Good",
    _ => "Needs Improvement"
};
int score = 90;

string result = score switch
{
    int s when s >= 90 && s <= 100 => "Excellent",
    int s when s >= 75 => "Good",
    _ => "Needs Improvement"
};

Burada, when ifadesi daha karmaşık boolean ifadeler kullanarak argümanın özel değerlendirmesine izin verir.

En İyi Uygulamalar ve Son Düşünceler

Tim kritik bir kavramı vurguluyor: switch ifadeleri kodunuzu daha kompakt hale getirse de, kompakt her zaman daha iyi anlamına gelmez. Bazen karmaşık mantık veya belirsiz girişler söz konusu olduğunda, geleneksel bir switch ifadesi ya da if bloku daha uygun olabilir.

Her durum için switch ifadesi kullanmak zorunda değilsiniz; işe uygun aracı seçin. Tim'in şakasıyla söylemek gerekirse, bu bir 'switch kültüne' katılmakla ilgili değildir. Bu, sisteminizde bakımı yapılabilir ve anlaşılır kod yazmakla ilgilidir.

Özet: Geliştirici Araç Kutunuza Switch İfadeleri Ekleme

C# switch ifadeleri, girdi desenlerine dayalı olarak değerleri değerlendirmek ve geri döndürmek için modern, temiz bir yol sunar; bu, sabit, ilişkisel ve tür desenlerinin bir kombinasyonunu kullanır. Mantığı basitleştirmek, tekrarlanan kodu azaltmak ve okunabilirliği artırmak istediğinizde idealdirler.

Tam sayıları değerlendirmekten hayvan nesnelerini tanımlamaya kadar, Tim Corey'nin videosundaki aşağıdaki örnekler, onların pratik kullanım alanlarını vurgular. Sonuçları hesaplamak, kullanıcı girişiyle başa çıkmak veya null ve tanımsız durumlarla çalışmak için bir fonksiyon oluşturuyorsanız, switch ifadeleri zaman kazandırabilir, hataları azaltabilir ve kod tabanınızı daha kolay yönetilebilir hale getirebilir.

Tim'in söylediği gibi, 'Kodunuzu daha basit ve temiz hale getirmek için araç kutunuzda bulundurmanız gereken gerçekten yardımcı bir araç ve yine de anlaşılabilir olmasını sağlıyor, belki daha da iyi.'

C# kod kalitenizi iyileştirmek ve .NET Core yeniliklerine ayak uydurmak istiyorsanız, switch ifadelerini göz ardı etmeyin. Onları deneyin, Visual Studio projelerinizde deney yapın ve mantığınızın ne kadar daha temiz hale gelebileceğini görün.

Hero Worlddot related to C# Switch İfadesi Açıklanıyor: Tim Corey'den Pratik Bir Rehber
Hero Affiliate related to C# Switch İfadesi Açıklanıyor: Tim Corey'den Pratik Bir Rehber

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara