Aşağıda bir ana program ve 3 tane aynı isimli metotdan oluşan bir program bulunmaktadır. Overload yaşanmaması için tüm bu metotlar ayrı parametre türü istemektedirler. Burada yaptığımız işlemin adı method overloading veya metodun türevlerini yazmak olarak isimlendirilebilir.
static void Main(string[] args)
{
Program ov = new Program(); //aşağıdaki metotlara erişebilmek için nesne türettik
Console.WriteLine(ov.Ekle(3, 5)); //1.metot çalışır
Console.WriteLine(ov.Ekle(3.0, 5.0)); //2.metot çalışır
Console.WriteLine(ov.Ekle("3", "5")); //3.metot çalışır
Console.ReadKey();
}
int Ekle(int no1, int no2)
{
return no1 + no2;
}
int Ekle(double no1, double no2)
{
return Ekle(Convert.ToInt32(no1), Convert.ToInt32(no2));
}
int Ekle(string no1, string no2)
{
int number1, number2;
int.TryParse(no1, out number1);
//number1 = Convert.ToInt32(no1);
int.TryParse(no2, out number2);
//number2 = Convert.ToInt32(no2);
return Ekle(number1, number2);
}
ÇIKTI:Bir ana program (main) ile metotlar aynı Class içerisinde bulunuyorsa, ana programda o metotlara erişebilmek için 2 seçenek vardır.OPSİYONEL PARAMETRELER
1) Program nesneIsmi = new Program(); kullanarak yeni bir nesne türetmeliyiz ve o nesneIsmi'ni kullanarak metotlarımızı çağırmalıyız.
2) Metotlarımızı tanımlarken "static" olarak tanımlamalıyız. Bu durumda bir nesne türetmemize gerek olmayacaktır.
Eğer aynı metoda opsiyonel parametre eklemek istiyorsak .NET 4.0'da gelen "optional parameters" özelliğinden faydalanabiliriz. Kullanım örneği;
int Ekle(int no1, int no2, int count = 1)
{
int sonuc = 0;
for (int i = 0; i < count; i++)
{
sonuc = Ekle(sonuc, Ekle(no1, no2));
}
return sonuc;
}
Yukarıdaki metodu kullanırken ana programda Ekle(1,2) diyebiliriz bu durumda count = 1 olacak ve döngü bir kez çalışacaktır. sonuc = 8 olarak döndürülür. Metodu Ekle(1,2,5) olarak çağırırsak count değişkenini başta 1 olarak tanımlamamıza rağmen count'un yeni değeri 5 olacak ve döngü 5 kez çalışacaktır. sonuc'un değeri de 8x5'den 40 olacaktır. Bu metodun çağırılma kodu da aşağıdadır;Console.WriteLine("4. Metot: " + ov.Ekle(3, 5, 5)); //40
Console.WriteLine("4. Metot: " + ov.Ekle(3, 5)); //8
PARAMS KULLANIMI
Overload işleminde daha eski bir kullanım da params ifadesi ile aynı tipte birçok metot parametresi geçmek şeklindedir. Kullanım şekli aşağıdadır;
int Ekle(params int[] sayilar)
{
int sonuc = 0;
for (int i = 0; i < sayilar.Length; i++)
{
sonuc = Ekle(sonuc, sayilar[i]);
}
return sonuc;
}
Bu metot ana programdan aşağıdaki gibi çağırılabilir;Console.WriteLine(ov.Ekle(1, 2, 3, 4, 5, 6, 7, 8, 9)); //45
Görüldüğü gibi params int[] sayilar parametresi içeriye istediğimiz sayıda int değişken verebilmemizi sağlıyor.
Hiç yorum yok:
Yorum Gönder