编译器错误 关键字“这个”不可用在目前情况下构造函数初始化不允许我使用“这个”
delegate void CallBack(int i);
class A
{
public A(CallBack cb) { }
}
class B : A
{
public B() : base(new CallBack(this.f)){}
private void f(int i) { }
}
这是为什么错误? 因为我认为在提供一个无参数的构造函数保护()的解决方案,并有
class B : A
{
public B() : base() // inherit the new A() ctor
{
base.cb = new CallBack(this.f); //this is allowed here
}
//...
}
你实际上是建议从构造函数调用一个虚拟方法? – 2009-04-29 13:44:38
这可能是一个很好的模式,但“文本”应该在A中,因为正如您在我的pb中看到的,A也在回调中, 以及我给出的解决方案只使用ctors(没有初始值,所以没有用户混淆)。但thx 4解决方案。 – user89010 2009-04-29 14:24:06
@Greg:是的,这是可能的解决方案之一。 @cataounfeldeszuzieq:“文本”可以在A或B中,这并不重要。源代码仅是可能情况之一的示例。 012lk @unknown:请告诉我,为什么我得到一个负面的观点。这对我和其他人来说都是有用的。谢谢。 – TcKs 2009-04-29 14:41:10