Меня смутил следующий код
class A
{
public void Abc(int q)
{
Console.Write("A");
}
}
class B : A
{
public void Abc(double p)
{
Console.Write("B");
}
}
...
var b = new B();
b.Abc((int)1);
Результат выполнения кода - "B", записанный на консоль.
Фактически класс B содержит две перегрузки метода Abc, первый для параметра int, второй для double. Почему компилятор использует двойную версию для целочисленного аргумента?
Будьте осторожны, метод abc (double) не затеняет или не отменяет метод abc (int)