C# Programming

C#’da Metot Geçirmeyi Öğrenme

Spread the love

C#, fonksiyonlara metotları parametre olarak geçmenize olanak tanır; bu da kodun esnekliğini ve yeniden kullanılabilirliğini önemli ölçüde artırır. Bu özellik, geri çağırma fonksiyonları, olay işleyicileri ve çalışma zamanı davranışının belirli işlemi dikte ettiği stratejik kalıpların uygulanması için çok önemlidir. Bu makale, özel delege, Func<> ve Action<> kullanarak bunu başarmanın çeşitli yaklaşımlarını ele almaktadır.

İçindekiler

Metotları Parametre Olarak Geçirmek İçin Özel Delege Kullanımı

C#’taki delege, tür güvenli fonksiyon işaretçileri görevi görür. Metot imzası yerleşik Func<> veya Action<> delege’lerinden farklı olduğunda, özel bir delege oluşturmak daha ayrıntılı kontrol ve açıklık sağlar. Bir sayı üzerinde işlem yapan ve ardından sonucu gösteren bir fonksiyonu ele alalım; burada işlem kendisi bir parametredir.


// Özel bir delege tanımlayın
public delegate double MathOperation(double x);

public class Example
{
    public static void PerformOperationAndPrint(double num, MathOperation operation)
    {
        double result = operation(num);
        Console.WriteLine($"Sonuç: {result}");
    }

    public static double Square(double x) => x * x;
    public static double Cube(double x) => x * x * x;

    public static void Main(string[] args)
    {
        PerformOperationAndPrint(5, Square); // Çıktı: Sonuç: 25
        PerformOperationAndPrint(5, Cube);  // Çıktı: Sonuç: 125
    }
}

MathOperation, bir double alan ve bir double döndüren bir metodu temsil eden bir delege görevi görür. PerformOperationAndPrint bu delegeyi kabul eder ve Square, Cube veya uyumlu herhangi bir metodun kullanımına olanak tanır.

Func<> Delege’sinden Faydalanma

Func<>, sıfır veya daha fazla giriş parametresi ve bir dönüş değeri olan bir metodu temsil eden genel bir delege’dir. Yerleşik yapısı birçok senaryoyu basitleştirir. Önceki örneği yeniden düzenleyelim:


public class Example
{
    public static void PerformOperationAndPrint(double num, Func<double, double> operation)
    {
        double result = operation(num);
        Console.WriteLine($"Sonuç: {result}");
    }

    public static double Square(double x) => x * x;
    public static double Cube(double x) => x * x * x;

    public static void Main(string[] args)
    {
        PerformOperationAndPrint(5, Square); // Çıktı: Sonuç: 25
        PerformOperationAndPrint(5, Cube);  // Çıktı: Sonuç: 125
    }
}

Bu, daha az kodla aynı sonucu elde eder. Func<double, double>, bir double alan ve bir double döndüren bir metodu belirtir. Genel tür parametreleri çeşitli metot imzalarına uyar (örneğin, Func<int, string>).

Action<> Delege’sini Kullanma

Action<>, sıfır veya daha fazla giriş parametresi ve void dönüş türüne (dönüş değeri yok) sahip metotlar için genel bir delege’dir. Metotlar değer döndürmediğinde kullanın.


public class Example
{
    public static void PerformAction(string message, Action<string> action)
    {
        action(message);
    }

    public static void PrintMessage(string msg) => Console.WriteLine(msg);
    public static void PrintMessageToUpper(string msg) => Console.WriteLine(msg.ToUpper());

    public static void Main(string[] args)
    {
        PerformAction("Merhaba, dünya!", PrintMessage);       // Çıktı: Merhaba, dünya!
        PerformAction("Merhaba, dünya!", PrintMessageToUpper); // Çıktı: MERHABA, DÜNYA!
    }
}

Action<string>, bir dize alan ve hiçbir şey döndürmeyen bir metodu temsil eder. PerformAction, çeşitli yazdırma işlemlerini yürütmek için bunu kullanır.

Sonuç

Metotları parametre olarak geçirmek güçlü bir C# özelliğidir. Özel delege’ler maksimum kontrol sunarken, Func<> ve Action<> uygun yerleşik çözümler sağlar. En iyi yaklaşım, uygulamanızın belirli gereksinimlerine bağlıdır. Bu tekniklerde uzmanlaşmak, daha uyarlanabilir ve sürdürülebilir C# kodları yazmanın anahtarıdır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir