1
就在前幾天,我發現一個實際上花了我一段時間才發現的錯誤。 不知何故,當通過繼承接口執行時,似乎發生了錯誤的重載。看看這個代碼。輸入推理接口
class Program
{
static void Main(string[] args)
{
IBar bar = new Bar();
bar.Execute("TEST");
}
}
public interface IFoo
{
void Execute(string value);
}
public interface IBar : IFoo
{
void Execute(object value);
}
public class Foo : IFoo
{
public void Execute(string value)
{
Console.WriteLine("Foo.Execute - string");
}
}
public class Bar : IBar
{
public void Execute(string value)
{
Console.WriteLine("Bar.Execute - string");
}
public void Execute(object value)
{
Console.WriteLine("Bar.Execute - object");
}
}
從這個程序的輸出是「酒吧 - 執行 - 對象」對我來說似乎有些奇怪,因爲更具體的過載可通過繼承IFoo的接口。誰能解釋這種行爲?
問候
伯恩哈德·裏希特