Есть такой вот код:
using System;
namespace Mutant_115
{
internal class Program
{
internal static void Main(string[] args)
{
B b = new B();
int i = 10;
double d = 10.0;
b.Foo(i);
b.Foo(d);
Console.ReadKey();
}
}
public class A
{
public void Foo(int i)
{
Console.WriteLine("int");
}
public void Foo(double i)
{
Console.WriteLine("double");
}
}
public class B: A
{
}
}
Выдает вполне предсказуемый результат:
int
double
Но если перенести дабровый метод в класс В
using System;
namespace Mutant
{
internal class Program
{
internal static void Main(string[] args)
{
B b = new B();
int i = 10;
double d = 10.0;
b.Foo(i);
b.Foo(d);
Console.ReadKey();
}
}
public class A
{
public void Foo(int i)
{
Console.WriteLine("int");
}
}
public class B: A
{
public void Foo(double i)
{
Console.WriteLine("double");
}
}
}
То результат меня несколько удивляет:
double
double
Господа, это бага или же какая-то хитрая фича в спеке, приводящая к неявному преобразованию?