컴파일러 오류 키워드 'this'는 현재 컨텍스트에서 사용할 수 없습니다.생성자 이니셜 라이저에서 'this'를 사용할 수 없습니다.
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) { }
}
이 오류는 왜입니까? 솔루션으로 나는 A()에서 매개 변수없는 보호 ctor를 제공하고
class B : A
{
public B() : base() // inherit the new A() ctor
{
base.cb = new CallBack(this.f); //this is allowed here
}
//...
}
실제로 생성자에서 가상 메서드를 호출하는 것이 좋습니다? –
이것은 따라야 할 좋은 패턴 일 수 있지만 "텍스트"는 내 pb에서 볼 수 있듯이 A가 콜백 인 도 포함하고 있기 때문에 내가 제공 한 솔루션도 ctors 만 사용합니다 (초기화자가 없으므로 혼란을 사용자에게). 그러나 thx 4 솔루션. – user89010
@ 그렉 : 예, 가능한 해결책 중 하나입니다. @cataounfeldeszuzieq : "텍스트"는 A 또는 B 일 수 있습니다. 중요하지 않습니다. 소스 코드는 가능한 상황 중 하나의 샘플이었습니다. @unknown : 왜 부정적인 점이 있는지 말해주십시오. 나와 다른 사람들에게 유용 할 것입니다. 감사. – TcKs