0Pricing
C# Academy · Ders

Jenerik Yöntemler

Yöntemlerde tür parametreleri.

Jenerik Yöntemler, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 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 4 dersten oluşur.

Genel Yöntemler Nedir?

Genel bir yöntem, açılı parantezler içinde kendi tür parametrelerinden birini veya birkaçını tanımlar. Aynı yöntem gövdesi, tür dönüştürme veya kod tekrarı olmadan birçok türle çalışır.

Tür parametreleri T gibi yer tutuculardır. Derleyici, çağrı noktasında gerçek türü bunların yerine koyarak tüm yapının güçlü tür denetimine tabi olmasını sağlar.

void Print<T>(T value)
{
    Console.WriteLine(value);
}

Tür Parametresi Tanımlama

Tür parametresi listesi <T>, yöntem adı ile parametre listesi arasında yer alır. Gövde içinde Tyi parametre türü, dönüş türü veya yerel değişken türü olarak kullanabilirsiniz.

Geleneksel olarak tek tür parametreleri T olarak adlandırılır; TKey gibi açıklayıcı adlar da yaygındır.

T Echo<T>(T input)
{
    return input;
}

Tür Çıkarımıyla Çağırma

Genellikle tür bağımsız değişkenini açıkça belirtmezsiniz. Derleyici, geçirdiğiniz bağımsız değişkenlerden T türünü çıkarır.

Burada Echo(42) ifadesi T = int çıkarımını, Echo("hi") ifadesi ise T = string çıkarımını yapar. Tür çıkarımı, genel çağrıları düzenli ve okunabilir tutar.

using System;

class Program
{
    static T Echo<T>(T input) => input;

    static void Main()
    {
        Console.WriteLine(Echo(42));
        Console.WriteLine(Echo("hi"));
    }
}

Açık Tür Bağımsız Değişkenleri

Tür çıkarımı türü belirleyemediğinde veya açıkça belirtmek istediğinizde, çağrı konumunda tür bağımsız değişkenini açılı parantezler içinde sağlayın.

Hiçbir bağımsız değişken türü taşımadığında bu işlem gereklidir; örneğin T yalnızca dönüş türünde görünen bir yöntemde.

T Create<T>() where T : new() => new T();

// call:
var list = Create<int>();

Birden Çok Tür Parametresi

Genel bir yöntem, virgüllerle ayrılmış birkaç tür parametresi bildirebilir. Her biri bağımsız olarak çıkarılır veya sağlanır.

Klasik bir örnek, iki farklı türü bir araya getiren değer değiştirme ya da ikili oluşturucudur.

(TSecond, TFirst) Flip<TFirst, TSecond>(TFirst a, TSecond b)
{
    return (b, a);
}

Genel Değer Değiştirme

Genel yöntemler, somut türü önemsemeyen yardımcı programlarda çok işe yarar. Bir değer değiştirme işlemi, eşleşen herhangi bir türdeki iki değerin sırasını değiştirir.

ref anahtar sözcüğü, yöntemin çağıranın değişkenlerini yerinde değiştirmesini sağlar.

using System;

class Program
{
    static void Swap<T>(ref T a, ref T b)
    {
        T temp = a;
        a = b;
        b = temp;
    }

    static void Main()
    {
        int x = 1, y = 2;
        Swap(ref x, ref y);
        Console.WriteLine($"{x} {y}");
    }
}

Yöntem Parametrelerindeki Kısıtlar

Genel bir yöntem, tür parametrelerini where yan tümcesiyle kısıtlayabilir. Kısıtlar, derleyiciye T üzerinde hangi işlemlere izin verildiğini bildirir.

Aşağıda where T : IComparable<T>, gövdenin CompareTo çağrısını güvenle yapmasını sağlar.

T Max<T>(T a, T b) where T : IComparable<T>
{
    return a.CompareTo(b) >= 0 ? a : b;
}

Genel Yöntemleri Genel Olmayan Sınıflarda Kullanma

Genel yöntemler içermek için bir sınıfın genel olması gerekmez. Statik yardımcı sınıflar genellikle bu yöntemleri barındırır.

Bu yaklaşım, genel amaçlı yardımcıları bir arada tutar ve tüm sınıfı bir tür parametresi taşımaya zorlamaz.

static class Util
{
    public static T First<T>(T[] items) => items[0];
}

Dizilerden Tür Çıkarımı

Tür çıkarımı, dizi ve koleksiyon bağımsız değişkenleri üzerinden de çalışır. Bir int[] geçirmek, otomatik olarak T = int çıkarımını sağlar.

Bu, genel algoritmaların yerleşik dil özellikleri gibi kullanılmasını sağlar.

using System;

class Program
{
    static T First<T>(T[] items) => items[0];

    static void Main()
    {
        int[] nums = { 10, 20, 30 };
        Console.WriteLine(First(nums));
    }
}

Neden Yalnızca object Kullanılmamalı?

Genel türlerden önce kodda object ve tür dönüştürmeleri kullanılırdı. Bu yaklaşım tür güvenliğini kaybettirir, değer türlerini kutular ve performansı düşürür.

Genel yöntemler, değer türlerinde kutulamayı önler ve tür hatalarını çalışma zamanında hata fırlatmak yerine derleme zamanında yakalar.

// Unsafe: needs a cast and can fail at runtime
object Echo(object o) => o;
int n = (int)Echo(5);

Farklı Türler Döndürme

Dönüş türü de genel olabilir; böylece tek bir yöntem çıktısını çağırana göre şekillendirebilir. default(T), değer türleri için sıfır değerini, başvuru türleri içinse null değerini üretir.

Bu, hiçbir değer bulunmadığında güvenli geri dönüşler sağlamak için kullanışlıdır.

T OrDefault<T>(bool ok, T value)
{
    return ok ? value : default(T);
}

Kısa Sınama

Genel yöntemlerle ilgili anlayışınızı sınayın.

Özet

Genel yöntemler, kendi tür parametrelerini adın ardından gelen açılı parantezler içinde bildirir. Derleyici genellikle türü bağımsız değişkenlerden çıkarır, ancak türü açıkça sağlayabilirsiniz.

Bu yöntemler tür güvenliğini korur, kutulamayı önler ve where kısıtları taşıyabilir. Bunları genel olan veya olmayan herhangi bir sınıfa yerleştirebilirsiniz.

Sıkça Sorulan Sorular

“Jenerik Yöntemler” dersi ücretsiz mi?

Evet — “Jenerik Yöntemler” 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 Yöntemler” dersinde ne öğreneceğim?

Yöntemlerde tür parametreleri. 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 1. dersidir.

“Jenerik Yöntemler” 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

  1. Jenerik Yöntemler
  2. Jenerik Sınıflar
  3. where Kısıtlamaları
  4. Jenerik Arayüzler
← C# Academy Sayfasına Dön