İlişkisel ve Mantıksal Kalıplar
Kalıplardaki koşulları birleştirin.
İlişkisel ve Mantıksal Kalıplar, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 3. 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.
İlişkisel Desenler
Bir ilişkisel desen, girdiyi <, >, <= veya >= kullanarak bir sabitle karşılaştırır. Karşılaştırma doğru olduğunda eşleşir.
C# 9'da kullanıma sunulan ilişkisel desenler, açık karşılaştırmalar yazmadan switch kollarında ve is ifadelerinde aralık denetimlerini kısa hâle getirir.
int temp = 18;
string level = temp switch
{
< 0 => "freezing",
< 15 => "cold",
< 25 => "mild",
_ => "hot"
};
System.Console.WriteLine(level);is ile İlişkisel Desenler
İlişkisel desenler is ifadelerinde de çalışarak okunabilir boole denetimleri sağlar.
n is > 0 neredeyse Türkçe bir cümle gibi okunur ve koşullarda, atamalarda veya LINQ koşul ifadelerinde kullanabileceğiniz bir bool döndürür.
using System;
class Program {
static void Main() {
int score = 82;
bool passed = score is >= 60;
Console.WriteLine(passed);
}
}and Deseni
and mantıksal deseni, her iki alt desenin de eşleşmesini gerektirir. Sınırları belirlenmiş aralıklar için idealdir.
>= 1 and <= 12, kapsayıcı bir aralık içindeki değerlerle eşleşir. and olmadan iki taraflı sınırları tek bir desende ifade etmek mümkün olmazdı.
int month = 6;
bool valid = month is >= 1 and <= 12;
System.Console.WriteLine(valid);or Deseni
or mantıksal deseni, alt desenlerden herhangi biri eşleştiğinde eşleşir. Alternatif değerleri tek bir kolda gruplandırır.
İlişkili durumlar için kolları tekrarlamak yerine 'a' or 'e' or 'i' bunları tek bir yapıda birleştirir. Böylece switch ifadeleri kısa kalır ve amaçlarını açıkça yansıtır.
char c = 'e';
string kind = c switch
{
'a' or 'e' or 'i' or 'o' or 'u' => "vowel",
_ => "consonant"
};
System.Console.WriteLine(kind);not Deseni
not mantıksal deseni, alt deseni eşleşmediğinde eşleşir. En yaygın kullanımı not null biçimidir.
Ayrıca not 0 veya not (> 100) gibi diğer desenleri de olumsuzlar ve dışlamaları tek bir kol içinde açıkça ifade etmenizi sağlar.
object? value = "hi";
if (value is not null)
System.Console.WriteLine("present");Mantıksal Desenleri Birleştirme
Mantıksal desenler birleştirilebilir. Parantezleri önceliği denetlemek için kullanarak zengin koşullar oluşturmak üzere and, or ve not ifadelerini zincirleyebilirsiniz.
Öncelik sırası şöyledir: not en sıkı bağlanır, ardından and, sonra or gelir. Amaç belirsiz olabilecek her durumda parantez ekleyin.
using System;
class Program {
static string Classify(int n) => n switch {
< 0 or > 100 => "out of range",
>= 0 and <= 50 => "low half",
_ => "high half"
};
static void Main() => Console.WriteLine(Classify(75));
}Notlandırmada Aralıklar
İlişkisel ve mantıksal desenler birlikte kullanıldığında klasik notlandırma tablolarını temiz bir şekilde modelleyebilir.
Kollar yukarıdan aşağıya denetlendiğinden basit üst sınırlar kullanabilir veya açık aralıklar için sınırları and ile birleştirebilirsiniz. Her iki biçim de geçerlidir; daha açık olanı seçin.
using System;
class Program {
static char Grade(int s) => s switch {
>= 90 => 'A',
>= 80 and < 90 => 'B',
>= 70 and < 80 => 'C',
_ => 'F'
};
static void Main() => Console.WriteLine(Grade(85));
}Özellik Desenleriyle not null
not null ifadesini tür ve özellik desenleriyle birleştirmek güvenli ve anlatımı güçlü koruma koşulları oluşturur.
obj is Person { Name: not null } p, boş olmayan ve Adı da boş olmayan bir Person ile eşleşir ve onu bir değişkene bağlar. Bu yaklaşım, art arda yazılan boş değer denetimlerini önler.
record Person(string? Name);
object obj = new Person("Kai");
if (obj is Person { Name: not null } p)
System.Console.WriteLine(p.Name);Aralıkları Olumsuzlama
Dışlamaları ifade etmek için ilişkisel bir grubu not ve parantezlerle olumsuzlayabilirsiniz.
not (>= 1 and <= 5), 1 ile 5 aralığının dışındaki her şeyle eşleşir. Bazı okuyucular için bu ifade, eşdeğeri olan < 1 or > 5 biçiminden daha doğrudan anlaşılır.
using System;
class Program {
static void Main() {
int n = 9;
bool outside = n is not (>= 1 and <= 5);
Console.WriteLine(outside);
}
}Tür Desenleriyle Birlikte Kullanma
Mantıksal desenler tür desenleriyle de birleştirilebilir. o is int or long, tamsayı türleriyle tek bir denetimde eşleşir.
Bu, birbiriyle ilişkili birkaç türü aynı şekilde ele almak için kullanışlıdır. or ifadesinin her iki tarafının da sonucun kullanılma biçimiyle uyumlu olması gerektiğini unutmayın.
object o = 5L;
string kind = o switch
{
int or long => "integral",
float or double => "floating",
_ => "other"
};
System.Console.WriteLine(kind);Okunabilirlik Yönergeleri
Mantıksal desenler ifade gücü sağlar, ancak yoğun hâle gelebilir. Kolları kısa tutun, and içeren aralıkları tercih edin ve açıklık için and/or karışımlarını paranteze alın.
Bir koşul çok sayıda yan tümce veya dış değişken gerektiriyorsa, uzun bir mantıksal desen yerine when koruma koşulu daha okunaklı olabilir. Niyeti hangisi daha iyi anlatıyorsa onu seçin.
int n = 42;
string r = n switch
{
> 0 and < 10 when n % 2 == 0 => "small even",
_ => "other"
};
System.Console.WriteLine(r);Hızlı Kontrol
İlişkisel ve mantıksal desenleri ne kadar anladığınızı test edin.
Özet
İlişkisel desenler (< > <= >=) sabitlerle karşılaştırma yapar. Mantıksal desenler alt desenleri and, or ve not ile birleştirir.
Öncelik sırası not, ardından and, sonra da or şeklindedir; bunları karıştırdığınızda parantez kullanın. Sırada liste ve demet desenlerini ele alacağız.
Sıkça Sorulan Sorular
“İlişkisel ve Mantıksal Kalıplar” dersi ücretsiz mi?
Evet — “İlişkisel ve Mantıksal 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.
“İlişkisel ve Mantıksal Kalıplar” dersinde ne öğreneceğim?
Kalıplardaki koşulları birleştirin. 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 3. dersidir.
“İlişkisel ve Mantıksal 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ı