假设您有以下类声明:
public abstract class Foo
{
public class Bar
{
public virtual void DoSomething() { ... }
}
}
是否可以在 Foo 的子类中重写 Bar.DoSomething(),a la:
public class Quz : Foo
{
public override void Bar::DoSomething() { ... }
}
显然这种语法不起作用,但这样的事情可能吗?
最佳答案
不,但是您仍然可以从 Foo.Bar
类本身继承:
public class BarDerived : Foo.Bar
{
public override void DoSomething() { ... }
}
我觉得我应该解释一下,这样做并不意味着从 Foo
派生的类会突然拥有 BarDerived
的内部类,它只是意味着有一个类可以从它派生。有多种方法可以替换您想用作内部类的类类型,例如:
public class Foo<T>
where T : Foo.Bar
{
private T _bar = new T();
public class Bar
{
public virtual void DoSomething() { ... }
}
}
public class BarDerived : Foo.Bar
{
public override void DoSomething() { ... }
}
public class Quz : Foo<BarDerived> { ... }
关于c# - 内部类的成员可以被覆盖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26553820/