Looking for c# Keywords? Try Ask4Keywords

C# Language Пример базовой перегрузки


пример

Этот код содержит перегруженный метод с именем Hello :

class Example
{
    public static void Hello(int arg)
    {
        Console.WriteLine("int");
    }
 
    public static void Hello(double arg)
    {
        Console.WriteLine("double");
    }
 
    public static void Main(string[] args) 
    {
        Hello(0);
        Hello(0.0);
    }
}

Когда вызывается метод Main , он будет печатать

int
double

Во время компиляции, когда компилятор находит вызов метода Hello(0) , он находит все методы с именем Hello . В этом случае он находит два из них. Затем он пытается определить, какой из методов лучше . Алгоритм определения того, какой метод лучше, сложный, но он обычно сводится к «сделать как можно меньше имплицитных преобразований».

Таким образом, в случае Hello(0) преобразование не требуется для метода Hello(int) но для метода Hello(double) требуется неявное числовое преобразование. Таким образом, первый метод выбирается компилятором.

В случае Hello(0.0) нет возможности конвертировать 0.0 в int неявно, поэтому метод Hello(int) даже не рассматривается для разрешения перегрузки. Остается только метод, поэтому он выбирается компилятором.