Podczas pisania aplikacji, możemy stworzyć kilka metod o takiej samej nazwie, które zwracają ten sam typ, ale posiadają różne typy bądź ilości parametrów wejściowych. Taka czynność nazywa się przeciążaniem metod.

Zobaczmy przykład:
Napiszmy najpierw same metody, nazwijmy je Dodaj. Niech metoda bez parametrów wejściowych zwraca nam po prostu liczbę 100. Metoda z jednym parametrem wejściowym zwraca 100+wartość parametru. Metoda z dwoma parametrami wejściowymi niech zwraca ich sumę. Analogicznie niech działa metoda z trzema parametrami wejściowymi. Wszystkie metody niech będą statyczne. Zobaczmy kod metod:

  public static double Dodaj() {
        return 100;
    }
    public static double Dodaj(int a) {
        return 100 + a;
    }
    public static double Dodaj(double a) {
        return 100 + a;
    }

    public static double Dodaj(int a, int b) {
        return a + b;
    }
    public static double Dodaj(int a, int b, int c) {
        return a + b + c;
    }

Podczas próby wywołania metody z metody Main() Visual Studio podpowie nam ile metod o tej nazwie istnieje:

1

Rys. Przeciążone metody o takiej samej nazwie

Wywołajmy teraz dla przykładu po jednej metodzie i wypiszmy jej wynik na ekranie:

using System;
class Program {
    static void Main() {
        Console.WriteLine("Metoda Dodaj() zwraca:{0} ", Program.Dodaj());
        Console.WriteLine("Metoda Dodaj(int a) zwraca:{0} ", Program.Dodaj(5));
        Console.WriteLine("Metoda Dodaj(double a) zwraca:{0} ", Program.Dodaj(5.7));
        Console.WriteLine("Metoda Dodaj(int a,int b) zwraca:{0} ", Program.Dodaj(5, 9));
        Console.WriteLine("Metoda Dodaj(int a,int b,int c) zwraca:{0} ", Program.Dodaj(5, 9, 8));
        Console.ReadLine();
    }
    public static double Dodaj() {
        return 100;
    }
    public static double Dodaj(int a) {
        return 100 + a;
    }
    public static double Dodaj(double a) {
        return 100 + a;
    }

    public static double Dodaj(int a, int b) {
        return a + b;
    }
    public static double Dodaj(int a, int b, int c) {
        return a + b + c;
    }
}

Rezultat działania aplikacji:

Rys. Przykład użycia

Poprzez zastosowanie przeciążenia metod, możemy napisać procedurę o takiej samej nazwie wykonującą różne operacje w zależności od ilości lub rodzaju parametru, daje nam to duże możliwości. Po skompilowaniu, kompilator wie z jakiej metody ma skorzystać.