Method Overload, aynı isme sahip birden fazla method’un olabilmesidir diyebiliriz.
Kural olarak, overload edilmiş method‘lar aynı imza‘ya (signature) sahip olamazlar.
Method İmzası (Method Signature), method’un ismi ve aldığı parametrelerin tipleri/adedidir. Method imzasına, method’un dönüş tipi dahil değildir.
Örnek olarak;
void Topla(int Sayi1, int Sayi2) /// Topla(int, int) { }
void Topla(string Isim1, string Isim2) /// Topla(string, string) { }
/// Aşağıdaki method, ilk Topla method’u ile aynı imzaya sahip void Topla(int Rakam1, int Rakam2) /// Topla(int, int) { }</pre>
Farklı bir örnek;
void EMailGonder(string To, string CC, string Konu, string Mesaj) { }
EMailGonder() method‘unu kullanarak, email gönderme işlevini yerine getirebiliriz.
Tek bir alıcı yerine, To kısmının string dizisi (string[]) olması gerektiği durumda, yeni bir method yazmamız, hangi method’u kullanmamız gerektiği konusunda kafa karışıklığına sebep olacaktır.
Method Overload sayesinde, bu kafa karışıklığı ve kod kalabalığından kurtulabiliriz;
void EMailGonder(string[] To, string CC, string Konu, string Mesaj) { }
İki method’umuz birlikte;
void EMailGonder(string To, string CC, string Konu, string Mesaj) { } void EMailGonder(string[] To, string CC, string Konu, string Mesaj) { }
Artık, EMailGonder() method’unu kullanacağımız zaman, ilk parametreyi string dizisi (string[]) şeklinde verirsek,
void EMailGonder(string[], string, string, string)
imzasına sahip method, ilk parametreyi string olarak verirsek,
void EMailGonder(string, string, string, string) imzasına sahip olan method çalıştırılacaktır.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484