Generic yöntemler/türler ve kısıtlamalar
Generic yöntemler ve türler yazın; where T : … (class, struct, new(), arayüz/temel tür) ile kısıtlamalar ekleyin.
Generic yöntemler/türler ve kısıtlamalar, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 1. 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.
Genel türlere genel bakış
Amaç: genel türlerle kodu güvenli biçimde yeniden kullanmak.
- Genel yöntemler ve türler
- Kısıtlamalar: sınıf, yapı, yeni(), arayüz/temel tür
- Örnekleri küçük ve açık tutun
Genel yöntem
Bir genel yöntem, örneğin Kimlik<T> gibi bir tür parametresi listesine sahiptir ve birçok türle çalışır.
using System;
// Generic method works for any T
public class Program
{
static T Identity<T>(T value)
{
// just returns what it got
return value;
}
public static void Main(string[] args)
{
int a = Identity<int>(5);
string b = Identity<string>("hi");
Console.WriteLine(a + " & " + b);
}
}
Genel tür
Box<T> gibi bir genel tür bir kez derlenir ve birçok somut türle kullanılır.
using System;
// Simple generic type to hold a value
public sealed class Box<T>
{
private T _value;
public Box(T value) { _value = value; }
public T Get() { return _value; }
public void Set(T value) { _value = value; }
}
public class Program
{
public static void Main(string[] args)
{
Box<int> bi = new Box<int>(10);
Box<string> bs = new Box<string>("ok");
Console.WriteLine(bi.Get() + " | " + bs.Get());
}
}
yeni() kısıtlaması
Genel kodun içinde yeni T() çağırmanız gerekiyorsa T için yeni() kısıtlamasını ekleyin.
using System;
// Factory that can create T with a parameterless ctor
public static class Factory
{
public static T Create<T>() where T : new()
{
return new T(); // allowed thanks to new() constraint
}
}
public sealed class Person
{
public string Name;
public Person() { Name = "Anon"; }
}
public class Program
{
public static void Main(string[] args)
{
Person p = Factory.Create<Person>();
Console.WriteLine(p.Name);
}
}
Arayüz kısıtlaması
T'yi bir arayüzle veya temel türle sınırlandırın; böylece üyelerini (ör. Karşılaştırılabilir<T>) çağırabilirsiniz.
using System;
// Min for two values that can be compared
public static class Utils
{
public static T Min<T>(T a, T b) where T : IComparable<T>
{
return a.CompareTo(b) <= 0 ? a : b;
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(Utils.Min(5, 3)); // 3
Console.WriteLine(Utils.Min("b", "a")); // a
}
}
Sınıf/yapı kısıtlamaları ve ipuçları
Diğer kısıtlamalar:
- T için koşul: sınıf → yalnızca başvuru türleri
- T için koşul: yapı → boş değer alamayan değer türleri
- Kısıtlamaları birleştirin: T için koşul: sınıf, Atılabilir, yeni()
- Arayüzleri en küçük düzeyde tutun; esneklik için arayüz kısıtlamalarını tercih edin.
yeni() kısıtlamasının anlamı
Özet
Özet: Genel yöntemler/türler oluşturun ve gereken üyeleri kullanmak için kısıtlamalar ekleyin: davranış için arayüz/temel tür, tür çeşidi için sınıf/yapı ve parametresiz oluşturucuyu çağırmak için yeni().
Sıkça Sorulan Sorular
“Generic yöntemler/türler ve kısıtlamalar” dersi ücretsiz mi?
Evet — “Generic yöntemler/türler ve kısıtlamalar” 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.
“Generic yöntemler/türler ve kısıtlamalar” dersinde ne öğreneceğim?
Generic yöntemler ve türler yazın; where T : … (class, struct, new(), arayüz/temel tür) ile kısıtlamalar ekleyin. 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 1. dersidir.
“Generic yöntemler/türler ve kısıtlamalar” 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
- Generic yöntemler/türler ve kısıtlamalar
- Arayüzler ve temsilcilerle varyans (in/out)
- Null olabilen başvuru türleri (farkındalık) ve ek açıklamalar (C# 6 kalıpları)