2 回答
TA贡献1752条经验 获得超4个赞
我说您可以对“没有C#8编译器”的工作原理有一个“很好的猜测”。我们这里基本上是:
public interface IPlayer {
// method 1
int Attack(int amount);
}
public interface IPowerPlayer : IPlayer {
// no methods, only provides implementation
}
public interface ILimitedPlayer : IPlayer {
// method 2, in question also provides implementation
new int Attack(int amount);
}
因此,我们有2个接口方法(具有相同的签名),并且某些接口(IPowerPlayer和ILimitedPlayer)提供了这些方法的实现。我们可以只在Player类本身中提供实现以实现类似的功能:
public class Player : IPowerPlayer, ILimitedPlayer {
int IPlayer.Attack(int amount) {
return amount + 50;
}
int ILimitedPlayer.Attack(int amount) {
return amount + 10;
}
}
然后从问题输出运行代码:
55
55
15
而且我认为原因很清楚。
- 2 回答
- 0 关注
- 122 浏览
添加回答
举报