2013-04-13 5 views
0

constructor initializers에 대한 다음 섹션의 의미는 무엇입니까?이 의미의 의미

인스턴스 생성자 초기화 프로그램은 생성중인 인스턴스에 액세스 할 수 없습니다. 따라서 생성자 이니셜 라이저의 인수 표현식에서 this을 참조하는 컴파일 타임 오류가 발생합니다. 이는 단순 표현식을 통해 인스턴스 멤버를 참조하는 인수 표현식의 컴파일 타임 오류이기도합니다.

+0

+1 원인은 Microsoft 문서에 대한 비난을받을 수 없기 때문에 많은 사람들이 알지 못하는 종류라고 생각합니다. –

+0

@alina @alina 설명서에 무엇이 잘못되었으며 왜 책임이 있습니까? –

+1

사람들이 아무런 의견도 남기지 않고 질문에 투표하는 것을 제외하면 아무런 문제가 없습니다. –

답변

8

이것은 생성자 초기화 프로그램이 실행될 때 인스턴스가 아직 생성 중임을 의미합니다. 따라서,이 초기화는 직접 this 통해 또는 인스턴스 멤버를 액세스 할 수

class Foo 
{ 
    private int _bar; 

    public Foo(int bar) 
    { 
     _bar = bar; 
    } 

    public Foo() : this(_bar)  // Illegal. 
    { 
    } 

    public Foo() : this(this._bar) // Also illegal. 
    { 
    } 
} 

추론이 모두 생성자 초기화 (this()base())에 적용된다.