Clear        


                
                    // Method Overload (Aynı İsimde Fakat Farklı İmzalarda Birden Çok Method Oluşturulması)

namespace _04_MethodOverload
{
    internal class Program
    {
        static void Main(string[] args)
        {
            #region Method Çağrımları
            int sonuc1;
            double sonuc2;



            sonuc1 = Topla(1, 2);
            Console.WriteLine(sonuc1); // konsola 3 yazdıracaktır



            sonuc2 = Topla(1.1, 2.2);
            Console.WriteLine(sonuc2); // konsola 3,3 yazdıracaktır



            sonuc2 = Topla(1.1, 2.2, 3.3);
            Console.WriteLine(sonuc2); // konsola 6,6 yazdıracaktır



            sonuc2 = Topla(1.1, 2.2, 3.3, 4.4);
            Console.WriteLine(sonuc2); // konsola 11 yazdıracaktır
            #endregion
        }



        #region Methodlar
        static int Topla(int sayi1, int sayi2) // int Topla(int sayi1, int sayi2); method imzasıdır,
                                               // farklı parametre tipleri, farklı dönüş tipi ve farklı parametre sayıları üzerinden aynı isimde yeni methodlar oluşturulup çağrılabilir
        {
            return sayi1 + sayi2;
        }



        static double Topla(double sayi1, double sayi2)
        {
            return sayi1 + sayi2;
        }



        static double Topla(double sayi1, double sayi2, double sayi3)
        {
            return sayi1 + sayi2 + sayi3;
        }



        //static double Topla(double sayi1, double sayi2, double sayi3, double sayi4 = 4) // method overload yaparken default parametre kullanımına dikkat edilmelidir ki bu satırda yanlıştır,
                                                                                          // buradaki gibi yapıldığında çağrımda bir üstteki methodla çakışacaktır
        static double Topla(double sayi1, double sayi2, double sayi3, double sayi4)
        {
            return sayi1 + sayi2 + sayi3 + sayi4;
        }
        #endregion
    }
}