【发布时间】:2021-08-27 17:35:51
【问题描述】:
我想知道这样的事情在 C# 中是否可行:
public class A
{
public string Foo() { return "Foo"; }
}
public class B : A
{
public string Bar() { return Foo(); }
}
public class C : B
{
public new string B.Foo() { return "Bar"; } // Hide A.Foo in B
}
Main()
{
C c = new C();
Console.WriteLine(c.Bar()); // Want to get "Bar"
}
public new string B.Foo() { return "Bar"; } 我的意思是在 C 中做一些事情(不改变 A 或 B),其结果与在 B 中实现 public new string Foo() { return "Bar"; } 的结果相同。因此,隐藏一个基类的方法继承层次结构。
【问题讨论】:
-
是的,
virtual。 -
@gunr2171 只更改 C 而不是隐藏 Bar
-
你的手在背后绑得很紧。
-
我想在 B 中隐藏 Foo(),只链接 C
-
答案基本上是“不”。我建议你引入一个新的虚拟方法并覆盖它 - 基本上,按照预期的方式使用继承。
标签: c#