我有以下情况
public interface IFoo
{
void Bar();
}
public class Parent : IFoo
{
public virtual void Bar(){}
}
public class Child : Parent, IFoo
{
public override void Bar(){}
}
IFoo test = new Child();
test.Bar();
test.Bar()总是调用父方法!
非常感谢任何帮助!!
答案 0 :(得分:1)
只有明确地实现它才会发生。
我刚刚测试过它。
答案 1 :(得分:1)
代码正确。
public interface IFoo
{
string Bar();
}
public class Parent : IFoo
{
public virtual string Bar()
{
return "Hello world";
}
}
public class Child : Parent, IFoo
{
public override string Bar()
{
return "Hello world after override";
}
}
static void Main(string[] args)
{
IFoo test = new Child();
Console.WriteLine(test.Bar());
Console.ReadLine();
}
输出为:
Hello world after override
答案 2 :(得分:0)
WorksForMe:问题必须在其他地方,当我运行此代码时,我看到正确调用了子方法。要编译代码,我必须从界面中的方法中删除“public”,并且我将两个Bar()方法都给了一个正文。
答案 3 :(得分:0)
C#4.0表示你的语法错误 -
public interface IFoo
{
void Bar();
}
- 访问修饰符在此处无效
因此,如果删除“public”,代码将按照您的计划使用子版本的方法运行