Jenerik Sınıflar
Yeniden kullanılabilir kapsayıcı türleri.
Jenerik Sınıflar, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 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 4 dersten oluşur.
Genel Sınıf Nedir?
Genel bir sınıf, sınıf adının ardından gelen açılı parantezler içinde bir veya daha fazla tür parametresi bildirir. Bu parametreler sınıf genelinde alanlar, özellikler, yöntem imzaları ve dönüş türleri için kullanılabilir.
Bu sayede güçlü tür denetimini korurken birçok öğe türüyle çalışabilen tek bir kapsayıcı veya hizmet yazabilirsiniz.
class Box<T>
{
public T Value { get; set; }
}Genel Sınıf Oluşturma
Bir örnek oluşturmak için somut bir tür bağımsız değişkeni sağlarsınız. Box<int> ve Box<string> oluşturulmuş farklı türlerdir.
Her oluşturulmuş tür, her yerde kendi T parametresi gerçek türle değiştirilmiş gibi davranır.
using System;
class Box<T> { public T Value { get; set; } }
class Program
{
static void Main()
{
var b = new Box<int> { Value = 7 };
Console.WriteLine(b.Value);
}
}Genel Alanlar ve Özellikler
Tür parametreleri alanların ve özelliklerin türü olarak kullanılabilir. Bir yığın, kuyruk veya önbellek verilerini genellikle bir T dizisinde ya da listesinde depolar.
Dahili depolama, tür dönüştürmeye gerek kalmadan tür güvenliğini korur.
class Pair<T>
{
public T First;
public T Second;
}Birden Çok Tür Parametresi
Bir sınıf birkaç tür parametresi alabilir. Anahtar/değer ikilisi veya sözlük tarzı bir tür genellikle iki parametre kullanır.
TKey ve TValue gibi açıklayıcı adlar, birden fazla parametre olduğunda okunabilirliği artırır.
class Entry<TKey, TValue>
{
public TKey Key { get; set; }
public TValue Value { get; set; }
}Basit Bir Genel Yığın
Burada bir List<T> üzerine kurulmuş küçük bir genel yığın yer alır. Push sona ekler, Pop ise sondan kaldırır.
Aynı sınıf int'ler, dizeler veya herhangi bir başvuru ya da değer türü için kullanılabilir.
using System;
using System.Collections.Generic;
class MyStack<T>
{
private readonly List<T> items = new();
public void Push(T item) => items.Add(item);
public T Pop()
{
var i = items[^1];
items.RemoveAt(items.Count - 1);
return i;
}
}
class Program
{
static void Main()
{
var s = new MyStack<string>();
s.Push("a");
s.Push("b");
Console.WriteLine(s.Pop());
}
}Genel Sınıfların İçindeki Genel Yöntemler
Genel bir sınıf, tek tek yöntemlerde ek tür parametreleri de bildirebilir. Bu yöntem düzeyindeki parametreler, sınıf düzeyindeki parametrelerden bağımsızdır.
Bu, örneğin depolanan türü başka bir türe dönüştürmek gibi ek esneklik sağlar.
class Box<T>
{
public T Value;
public TOut Map<TOut>(Func<T, TOut> f) => f(Value);
}Sınıftaki Kısıtlar
Yöntemlerde olduğu gibi genel bir sınıf da tür parametrelerini where ile kısıtlayabilir. Bir kısıt, o parametreyi kullanan her üye için geçerlidir.
Aşağıda where T : class, null atamasına ve başvuru karşılaştırmalarına izin verir.
class Repository<T> where T : class
{
private T current;
public bool IsEmpty => current is null;
}Statik Üyeler Tür Başınadır
Her oluşturulmuş genel tür, statik alanların kendi kopyasını alır. Counter<int> ve Counter<string> ayrı sayaçları izler.
Bu, genel olmayan sınıflardan küçük ama önemli bir farktır.
class Counter<T>
{
public static int Count;
}Genel Sınıflarda Varsayılan Değerler
Genel bir sınıfın içinde, T türündeki bir alan için çoğu zaman başlangıç değerine ihtiyaç duyarsınız. Tür bağlamdan biliniyorsa default(T) veya daha kısa olan default ifadesini kullanın.
Bu ifade başvuru türleri için null, değer türleri içinse sıfır değerini üretir.
class Slot<T>
{
public T Value = default!;
public bool HasValue { get; private set; }
}Genel Bir Sınıftan Türetme
Genel bir temel sınıftan türetebilirsiniz. Alt sınıf, tür bağımsız değişkenini sabitleyebilir veya kendisi de genel kalabilir.
Türü sabitlemek temeli özelleştirir; genel kalmak ise parametreyi üst sınıfa iletir.
class Box<T> { public T Value; }
class IntBox : Box<int> { }
class NamedBox<T> : Box<T> { public string Name; }Genel Türler ve Yerleşik Koleksiyonlar
.NET temel kitaplığı genel sınıflarla doludur: List<T>, Dictionary<TKey, TValue> ve Queue<T>. Bunlar, genel sınıf tasarımının günlük hayattaki en belirgin kazanımlarıdır.
Kendi genel türlerinizi yazmak, aynı güvenli ve yeniden kullanılabilir yaklaşımı genişletmenizi sağlar.
using System.Collections.Generic;
var scores = new Dictionary<string, int>();
scores["ada"] = 95;Kısa Sınama
Genel sınıflarla ilgili anlayışınızı sınayın.
Özet
Genel sınıflar, sınıf adından sonra tür parametrelerini bildirir ve bunları alanlar, özellikler ve yöntemler için kullanır. Bu sınıfları somut tür bağımsız değişkenleriyle oluşturduğunuzda farklı türler elde edersiniz.
Yöntem düzeyinde tür parametreleri ekleyebilir, where kısıtları taşıyabilir, devralınabilir ve tür başına statik durum tutabilirler. Yerleşik koleksiyonlar bunun en önemli örneğidir.
Sıkça Sorulan Sorular
“Jenerik Sınıflar” dersi ücretsiz mi?
Evet — “Jenerik Sınıflar” 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.
“Jenerik Sınıflar” dersinde ne öğreneceğim?
Yeniden kullanılabilir kapsayıcı türleri. 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 2. dersidir.
“Jenerik Sınıflar” 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
- Jenerik Yöntemler
- Jenerik Sınıflar
- where Kısıtlamaları
- Jenerik Arayüzler