Liste ve Tuple Kalıpları
Koleksiyonları yapısökümüne uğratın.
Liste ve Tuple Kalıpları, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 4. 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.
Demet Desenleri
Demet deseni, birden çok değeri parantez içine alarak aynı anda eşleştirir. Her konum kendi alt deseniyle eşleştirilir.
Bu yaklaşım, küçük bir durum makinesi veya tek bir seçim yapısındaki taş-kâğıt-makas değerlendiricisi gibi birden çok girdiye bağlı kararlar için idealdir.
int x = 0, y = 5;
string quadrant = (x, y) switch
{
(0, 0) => "origin",
(0, _) => "y-axis",
(_, 0) => "x-axis",
_ => "plane"
};
System.Console.WriteLine(quadrant);Çalıştırılabilir Bir Demet Seçim Yapısı
Demet desenleri karar tablolarını okunaklı hâle getirir. Burada iki boole değeri bir eylem seçer.
Her kol bir demet deseni listeler; bir konumdaki _ yok sayma işareti, o yuvanın herhangi bir değer alabileceği anlamına gelir. Son _ kolu geri kalan tüm durumları kapsar.
using System;
class Program {
static string Move(bool fwd, bool turn) => (fwd, turn) switch {
(true, false) => "straight",
(true, true) => "curve",
(false, true) => "spin",
_ => "stop"
};
static void Main() => Console.WriteLine(Move(true, true));
}Demetlerin İçinde Değer Bağlama
Bir demet desenindeki konumlar değerleri yakalayabilir. (0, var y), ilk öğe 0 olduğunda eşleşir ve ikinci öğeyi y'ye bağlar.
Daha sonra bağlanan değişkeni kol sonucunda veya bir when koruma koşulunda kullanabilir; böylece eşleştirme ile değer çıkarma işlemlerini tek adımda birleştirebilirsiniz.
var point = (0, 7);
string r = point switch
{
(0, var y) => $"on y-axis at {y}",
(var x, 0) => $"on x-axis at {x}",
_ => "elsewhere"
};
System.Console.WriteLine(r);Liste Desenleri
Liste deseni, dizileri ve listeleri köşeli parantezlerle yazılan öğelerine göre eşleştirir: [1, 2, 3]. Uzunluk ve her öğenin deseni birbiriyle uyuştuğunda eşleşme gerçekleşir.
C# 11 ile kullanıma sunulan liste desenleri, uzunluk ve dizin denetimlerini elle yapmadan doğrudan dizi biçimine göre dallanmanızı sağlar.
int[] data = { 1, 2, 3 };
string shape = data switch
{
[] => "empty",
[_] => "one",
[_, _] => "two",
_ => "many"
};
System.Console.WriteLine(shape);Tam Öğelerle Eşleştirme
Liste desenleri her konumdaki belirli değerlerle eşleşebilir. [1, 2, 3] yalnızca tam olarak bu üç öğeli diziyle eşleşir.
Sabitleri ve yok sayma işaretlerini dilediğiniz gibi birleştirin: [1, _, 3], 1 ile başlayan ve 3 ile biten, ortadaki öğeyi dikkate almayan üç öğeli bir listeyle eşleşir.
using System;
class Program {
static void Main() {
int[] a = { 1, 9, 3 };
bool ok = a is [1, _, 3];
Console.WriteLine(ok);
}
}Dilim Deseni
Dilim deseni .., tek bir konumda sıfır da dâhil olmak üzere herhangi bir sayıda öğeyle eşleşir. Bir liste deseni en fazla bir dilim içerebilir.
[1, .., 9], arada ne olduğundan bağımsız olarak 1 ile başlayan ve 9 ile biten her listeyle eşleşir. Bu, baş ve kuyruk denetimleri için oldukça kullanışlıdır.
int[] nums = { 1, 4, 5, 9 };
string r = nums switch
{
[1, .., 9] => "1..9 bookends",
_ => "other"
};
System.Console.WriteLine(r);Bir Dilimi Yakalama
Dilim, atlanan öğeleri var kullanarak bir değişkene yakalayabilir: [first, .. var rest].
Yakalanan bölüm, eşleştirilen türün kendisine ait bir dizi veya listedir. Böylece bir baş öğesini ayrıştırabilir ve kuyruğu sonraki işlemler için koruyabilirsiniz.
using System;
class Program {
static void Main() {
int[] xs = { 10, 20, 30, 40 };
if (xs is [var head, .. var tail])
Console.WriteLine($"{head} then {tail.Length} more");
}
}Uç Öğeleri Bağlama
Bir dilimin iki tarafındaki uçları da bağlayabilirsiniz: [var first, .., var last], ortadaki öğeleri yok sayarken ilk ve son öğeleri yakalar.
Bu, yalnızca sınırların önemli olduğu diziler için, örneğin bir rotanın bilinen noktalarda başlayıp bittiğini doğrulamak için kısa ve kullanışlıdır.
using System;
class Program {
static void Main() {
string[] route = { "A", "B", "C", "D" };
if (route is [var start, .., var end])
Console.WriteLine($"{start} -> {end}");
}
}Alt Desenlerle Liste Desenleri
Her liste konumunda ilişkisel ve mantıksal desenler de dâhil olmak üzere herhangi bir desen kullanılabilir. [> 0, > 0], pozitif değerlerden oluşan iki öğeli bir listeyle eşleşir.
Bu yaklaşım, tüm desen araçlarını dizi eşleştirmesinde birleştirir; böylece hem biçimi hem de içeriği tek bir ifadede doğrulayabilirsiniz.
int[] pair = { 3, 8 };
string r = pair switch
{
[> 0, > 0] => "both positive",
[_, _] => "mixed",
_ => "wrong size"
};
System.Console.WriteLine(r);Demetleri ve Listeleri İç İçe Yerleştirme
Demet ve liste desenleri birbirlerinin içinde ve özellik desenlerinin içinde iç içe kullanılabilir. Bir demet konumu bir liste deseni, bir liste konumu da bir demet deseni barındırabilir.
Bu sayede etiketli bir dizi gibi karmaşık yapılandırılmış verileri, birden çok iç içe denetim yerine tek bir ifadede eşleştirebilirsiniz.
using System;
class Program {
static void Main() {
(string, int[]) record = ("primes", new[]{ 2, 3 });
string r = record switch {
("primes", [2, ..]) => "starts with 2",
_ => "other"
};
Console.WriteLine(r);
}
}Liste Desenleri için Gereksinimler
Liste desenleri, sayılabilir ve dizinlenebilir tüm türlerde çalışır: türün bir Length veya Count özelliğine ve bir dizinleyiciye sahip olması gerekir. Diziler, List<T> ve dizeler bu koşulu karşılar.
Dilim yakalama ayrıca bir dilim yöntemi veya aralık dizinleyicisi gerektirir. Yerleşik koleksiyonların çoğu bu iki özelliği hazır olarak destekler.
string s = "cat";
bool isCat = s is ['c', 'a', 't'];
System.Console.WriteLine(isCat);Hızlı Kontrol
Liste ve demet desenlerini ne kadar anladığınızı test edin.
Özet
Demet desenleri birden çok değeri parantez içinde eşleştirir; liste desenleri ise dizilerin biçimini köşeli parantezlerle eşleştirir ve .., ortadaki bölümü var aracılığıyla yakalayabilen bir dilim olarak kullanılır.
Konumlar herhangi bir alt deseni kabul eder ve serbestçe iç içe yerleştirilebilir. Liste desenleri sayılabilir ve dizinlenebilir bir tür gerektirir. Artık C# desen araçlarının tamamına hâkimsiniz.
Sıkça Sorulan Sorular
“Liste ve Tuple Kalıpları” dersi ücretsiz mi?
Evet — “Liste ve Tuple Kalıpları” 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.
“Liste ve Tuple Kalıpları” dersinde ne öğreneceğim?
Koleksiyonları yapısökümüne uğratı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, 4 dersinin 4. dersidir.
“Liste ve Tuple Kalıpları” 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
- switch İfadeleri
- Tür ve Özellik Kalıpları
- İlişkisel ve Mantıksal Kalıplar
- Liste ve Tuple Kalıpları