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)
{
}
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.