Sobes.tech
Junior

Czym jest przeciążanie metod w C#?

sobes.tech AI

Odpowiedź od AI

Przeciążanie metod (Method Overloading) w C# pozwala na zdefiniowanie kilku metod w tej samej klasie o tej samej nazwie, ale z różnymi sygnaturami.

Sygnatura metody obejmuje:

  • Nazwę metody.
  • Liczbę i typy parametrów na liście parametrów.

Nie jest uwzględniane w sygnaturze:

  • Typ wartości zwracanej.
  • Modyfikatory parametrów (np. ref, out).

Przykład:

// Klasa z przeciążonymi metodami
public class Calculator
{
    // Przeciążenie 1: Dodawanie dwóch liczb całkowitych
    public int Add(int a, int b)
    {
        return a + b;
    }

    // Przeciążenie 2: Dodawanie dwóch liczb zmiennoprzecinkowych (inne typy parametrów)
    public double Add(double a, double b)
    {
        return a + b;
    }

    // Przeciążenie 3: Dodawanie trzech liczb całkowitych (inna liczba parametrów)
    public int Add(int a, int b, int c)
    {
        return a + b + c;
    }

    // To NIE jest przeciążenie: różni się tylko typem wartości zwracanej
    /*
    public double Add(int a, int b)
    {
        return (double)(a + b);
    }
    */
}

Kompilator określa, który metodę wywołać podczas kompilacji, na podstawie typów i liczby argumentów przekazywanych podczas wywołania. Jest to znane jako wiązanie statyczne (Static Binding) lub wiązanie wczesne (Early Binding).

Zalety przeciążania metod:

  • Poprawia czytelność i wygodę korzystania z kodu.
  • Przedstawia podobne operacje pod jedną nazwą, ale dla różnych typów danych lub z różnymi zestawami parametrów wejściowych.