C #에서 개체가 자체 기본 생성자에서 생성하는 자식 개체의 생성자에 자신에 대한 참조를 전달할 수 있습니까?

토리 네 더턴

따라서 다음 개체가 있다고 가정 해 보겠습니다.

public abstract class Chicken
{
    public Egg Container { get; private set; }

    protected Chicken(Egg container)
    {
        Container = container;
    }
}

public abstract class Egg
{
    public Chicken Contents { get; private set; }

    protected Egg(Chicken contents)
    {
        Contents = contents;
    }
}

public class Buckeye : Chicken
{
    public Buckeye(Egg container) : base(container)
    {

    }
}

public class BrownEgg : Egg
{
    public BrownEgg() : base(new Buckeye(this))
    {

    }
}

닭 품종의 이름을 제공해 주신 Wikipedia에 감사드립니다.

어쨌든 이전 코드는 컴파일되지 않습니다. "멤버 이니셜 라이저에서 'this'를 사용할 수 없습니다."라는 메시지가 표시됩니다.

그래서 저는 이것이 가능한 방법이 있는지 알고 싶습니다. 생성중인 개체에 대한 참조를 외부 개체 기본으로 전달해야하는 생성중인 자식 개체에 전달할 수 있습니까?

나는 아마도 질문 제목을 잘못 말했지만 간결하게 전달하는 것은 어려운 개념입니다.

알렉세이 레벤 코프

this기본 생성자 호출에서 사용할 수 없습니다 ( 멤버 이니셜 라이저에서 'this'를 사용할 수없는 이유는 무엇입니까? 참조 ).

채워진 객체 대신 생성자 함수를 전달하여 내부 생성자가 전달할 수 this있습니다. 다음과 같은 것 :

protected Egg(Func<Egg, Chicken> contentsCreator) 
{
   Contents = contentsCreator(this);
}

public BrownEgg() : base(me => new Buckeye(me))
{
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관