Compilerfehler Schlüsselwort ‚this‘ zu verwenden, ist im aktuellen Kontext nicht verfügbarConstructor initializer erlaubt mir nicht, ‚dieses‘
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) { }
}
Warum ist dieser Fehler? Als Lösung, die ich dachte, einen parameter geschützt Ctor in A() die Bereitstellung und
class B : A
{
public B() : base() // inherit the new A() ctor
{
base.cb = new CallBack(this.f); //this is allowed here
}
//...
}
Sie empfehlen eigentlich, eine virtuelle Methode von einem Konstruktor aufzurufen ?? –
Dies kann ein schönes Muster sein, aber "Text" sollte in A sein, da A auch in meinem Callback steht, und auch die Lösung, die ich gab, verwendet nur ctors (keine Initialisierer, also nein Verwirrung für den Benutzer). Allerdings thx 4 Lösung. – user89010
@Greg: Ja, das ist eine der möglichen Lösung. @cataounfeldeszuzieq: Der "Text" kann in A oder B sein, es ist nicht wichtig. Der Quellcode war nur ein Beispiel für eine der möglichen Situationen. @unknown: Bitte sagen Sie mir, warum ich einen negativen Punkt bekam. Es wird für mich und andere nützlich sein. Vielen Dank. – TcKs