C# Method Overloading Nedir?

Method Overloading, türkçe çevirimi tam olarak doğru bir anlam ifade etmese de Metot Aşırı Yükleme, aynı iş mantığına sahip metotlar bir arada tutup kolay erişim ve kullanım sağlamak için kullanılmaktadır.

Method Overloading bir diğer deyişle, aynı isimde ama birbirinden farklı özelliklere sahip birden fazla benzer metodun yazılmasıdır. Bu yazım bizlere metodu çağırdığımız zaman kullanacağımız özelliğe göre seçim yapma esnekliği kazandırır.

.NET Framwork içerisinde bir çok method overloading yüklenmiştir. Örneğin Console sınıfının WriteLine metodunun on dokuz farklı yüklenmiş versiyonu bulunmaktadır. Bu on dokuz versiyonunda farklı isimlerde ki metotlar olduğu düşünülürse, geliştiricinin bu metotların hepsini ezberinde tutması gerekecektir. bu gerçekten zorlu bir iştir. Method overloading bu noktada geliştiriciye büyük fayda sağlamaktadır.

Aynı isimli metotları birbirinden ayıran bu özellikler; metot parametrelerinin tipleri ve sayılarıdır. Metotları benzersiz yapan bu özelliklere metot imzası denilmektedir.

Kısacası, metot imzaları farklı, isimleri aynı birden fazla metodun yazılmasına Method Overloading denilmektedir.

Aşağıda farklı özelliklerde toplama işlemi yapmamızı sağlayacak bir Method Overloading örneği hazırlanmıştır.

Method-1

private static double Topla(int a, int b)
{
    return a + b;
}

Method-2

private static double Topla(double a, double b)
{
    return a + b;
}

Method-3

private static double Topla(double a, double b, double c)
{
    return a + b + c;
}

Method-4

private static double Topla(out double sonuc, params double[] toplanacaklar) 
{
    sonuc = 0;
    for (int i = 0; i < toplanacaklar.Length; i++)
    {
        sonuc += toplanacaklar[i];
    }
    return sonuc;
}

Method – Çağırma

static void Main(string[] args)
{

    double toplam1 = Topla(1, 5);
    Console.WriteLine("Sonuc 1: " + toplam1);

    double toplam2 = Topla(2.5, 5.8);
    Console.WriteLine("Sonuc 2: " + toplam2);

    double toplam3 = Topla(2.5, 5.8, 7.5);
    Console.WriteLine("Sonuc 3: " + toplam3);

    double sonuc;
    Topla(out sonuc, 1, 5, 56, 58);
    Console.WriteLine("Sonuc 4: " + sonuc);
}

Ekran Çıktısı