有人可以解释同一类上的相同函数的行为有何不同吗?
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
MyUpperScript mAsdfScript = new MyUpperScript();
IInterface mAsdfInterface = mAsdfScript;
mAsdfScript.Foo();
mAsdfInterface.Foo();
}
}
public class MyUpperScript : MyScript
{
public void Foo()
{
Console.WriteLine("Upper Script");
}
}
public class MyScript : IInterface
{
}
public interface IInterface
{
public void Foo()
{
Console.WriteLine("Interface");
}
}
Run Code Online (Sandbox Code Playgroud)
我期望它在 Foo() 调用上都写“Upper Script”
请注意,如果我也从接口派生第二个类,它会按照我期望的方式工作 - 都打印“Upper Script”:
// now deriving for the interface too:
public class MyUpperScript : MyScript, IInterface
{ …Run Code Online (Sandbox Code Playgroud) c# inheritance overriding interface default-interface-member