switch ifadeleri; when ile tüm durumların denetlenmesi (C# 6 öykünmesi)
Klasik switch-return yöntemleriyle switch ifadelerini öykünün, koruma denetimleri ekleyin ve çalışma zamanında işlenmemiş durumları yakalamak için varsayılan durumda istisna fırlatın.
switch ifadeleri; when ile tüm durumların denetlenmesi (C# 6 öykünmesi), CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 2. 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 3 dersten oluşur.
Plan: switch taklidi
Amaç: Modern switch ifadelerini C# 6'da taklit etmek.
- Klasik switch ifadelerinden değer döndürün
- Korumalar ile ön kontrol yapın
- Tüm durumların ele alınmasını sağlamak için default throw ile hızlıca başarısız olun
Değer döndüren switch
Değer döndüren bir seçim deyimi, switch ifadesi gibi davranır. Varsayılan fırlatma, bilinmeyen değerleri yakalar.
using System;
public enum Grade { A, B, C, D, F }
public class Program
{
static string Describe(Grade g)
{
switch (g)
{
case Grade.A: return "Excellent";
case Grade.B: return "Good";
case Grade.C: return "Average";
case Grade.D: return "Below average";
case Grade.F: return "Fail";
default: throw new ArgumentOutOfRangeException("g");
}
}
public static void Main(string[] args)
{
Console.WriteLine(Describe(Grade.A));
Console.WriteLine(Describe(Grade.F));
}
}
Koruyucularla koşullar
Koruma denetimlerini (if'leri) kullanarak when yan tümcelerini taklit ediniz. Önce girişleri doğrulayınız, ardından aralıklara göre dallanınız.
using System;
public class Program
{
// Emulate: switch(score) { case var s when s >= 90: ... } using pre-guards
static string LabelScore(int score)
{
if (score < 0 || score > 100) throw new ArgumentOutOfRangeException("score");
if (score >= 90) return "A";
if (score >= 80) return "B";
if (score >= 70) return "C";
if (score >= 60) return "D";
return "F";
}
public static void Main(string[] args)
{
Console.WriteLine(LabelScore(92)); // A
Console.WriteLine(LabelScore(77)); // C
}
}
Kapsamlılık yardımcısı
Küçük bir Exhaustive.Unhandled yardımcısı ekleyip bunu varsayılan durumda çağırınız. Yeni bir enum değeri işlenmediğinde sınamalar başarısız olacaktır.
using System;
public enum Status { New, Active, Closed }
public static class Exhaustive
{
public static Exception Unhandled(object x)
{
return new InvalidOperationException("Unhandled case: " + x);
}
}
public class Program
{
static int ToHttp(Status s)
{
switch (s)
{
case Status.New: return 201;
case Status.Active: return 200;
case Status.Closed: return 410;
default: throw Exhaustive.Unhandled(s);
}
}
public static void Main(string[] args)
{
Console.WriteLine(ToHttp(Status.Active)); // 200
}
}
Koruyucular + türe göre seçim
Her dalın verilerini ön koruma denetimleriyle doğrulayınız, ardından ayırt edici etikete göre seçim yapınız. Bu yaklaşım, durumlar üzerindeki “when” koşullarını yansıtır.
using System;
public enum ShapeKind { Circle, Square }
public sealed class Shape
{
public ShapeKind Kind;
public double Radius; // for circle
public double Side; // for square
}
public class Program
{
static double Area(Shape s)
{
if (s == null) throw new ArgumentNullException("s");
// “when” guards (validate needed fields)
if (s.Kind == ShapeKind.Circle && s.Radius < 0) throw new ArgumentException("Radius must be >= 0");
if (s.Kind == ShapeKind.Square && s.Side < 0) throw new ArgumentException("Side must be >= 0");
switch (s.Kind)
{
case ShapeKind.Circle: return Math.PI * s.Radius * s.Radius;
case ShapeKind.Square: return s.Side * s.Side;
default: throw new InvalidOperationException("Unhandled shape: " + s.Kind);
}
}
public static void Main(string[] args)
{
Shape c = new Shape { Kind = ShapeKind.Circle, Radius = 2.0 };
Console.WriteLine("Area circle = " + Area(c));
}
}
İpuçları ve tuzaklar
İpuçları:
- Küçük, değer döndüren yöntemleri tercih ediniz (tek sorumluluk).
- Eksik durumları erkenden ortaya çıkarmak için varsayılan durumu fırlatma yapınız.
- Koruyucuları seçimden önce yerleştiriniz; bunlar when koşulları gibi davranır.
Kapsamlılık taklidi
Özet
Özet: Klasik seçim deyiminden, seçim ifadesindeki gibi değer döndürünüz; “when” için koruyucular ekleyiniz ve eksik durumları görünür kılmak için varsayılan fırlatmayı koruyunuz.
Yapay zeka eğitmeniyle C# öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 93
- Dersler
- 346
Sıkça Sorulan Sorular
“switch ifadeleri; when ile tüm durumların denetlenmesi (C# 6 öykünmesi)” dersi ücretsiz mi?
Evet — “switch ifadeleri; when ile tüm durumların denetlenmesi (C# 6 öykünmesi)” 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 3 dersten oluşur.
“switch ifadeleri; when ile tüm durumların denetlenmesi (C# 6 öykünmesi)” dersinde ne öğreneceğim?
Klasik switch-return yöntemleriyle switch ifadelerini öykünün, koruma denetimleri ekleyin ve çalışma zamanında işlenmemiş durumları yakalamak için varsayılan durumda istisna fırlatın. 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, 3 dersinin 2. dersidir.
“switch ifadeleri; when ile tüm durumların denetlenmesi (C# 6 öykünmesi)” 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.
Bu kursun tüm dersleri
- is kalıpları; ilişkisel ve mantıksal kalıplar (C# 6 öykünmesi)
- switch ifadeleri; when ile tüm durumların denetlenmesi (C# 6 öykünmesi)
- Ayrıştırılmış birleşimlerle alan modelleme (kayıtlar) — C# 6 öykünmesi