2010-11-21 3 views
6

나는 다음과 같은 상태 일부 C#을 튜토리얼을 통해 갈거야 :. 그것은 속성 클래스를 찾으면객체 생성이

"를, 컴파일러는 속성이 클래스에 허용되는지 여부를 확인합니다 그런 다음 확인합니다 속성에 지정된 매개 변수와 일치하는 생성자의 경우 지정된 값을 사용하여 생성자를 호출하여 객체의 인스턴스를 만듭니다.

이 단락의 이름은 "컴파일 프로세스"이며 컴파일러가 속성을 처리하는 방법을 참조합니다. 무지로 유감 스럽지만 런타임에 인스턴스를 생성해서는 안됩니까?

감사합니다.

+2

해당 견적을 검색하면 정확히 1 개의 결과가 반환됩니다.이 질문. 너 어디서 났니? – dtb

+0

여기 컴파일러는 "컴파일러가 생성하는 코드"와 동의어로 사용됩니다. – Hogan

답변

3

속성은 클래스의 메타 데이터를 정의합니다. 클래스의 모든 인스턴스 (즉, 객체)는 동일한 속성 값을 공유합니다. 이 메타 데이터는 소스 파일에서 컴파일 할 때 한 번 계산되는 유형 정의와 함께 저장됩니다.

1

.NET Framework를 사용하여 해석되는 중간 코드를 생성하는 "컴파일"프로세스가 있습니다.

그래서 컴파일 과정에 대해 이야기합니다.

2

또한 affect the compiler이라는 특성이 있으므로 컴파일러 을 수행하면이 컴파일 될 때 인스턴스화되는 경우 놀라지 않을 것입니다. 그래서?

+0

컴파일러가 객체를 인스턴스화하는 것을 알지 못했습니다. – user429400

+1

소리가 거의 들리지 않습니다. 나는 컴파일러가 속성을 인스턴스화하는 것을 의심한다 (즉, 사용자 정의 속성의 생성자를 호출한다). – CodesInChaos

+0

컴파일러는 어떻게 개체를 인스턴스화합니까 ?? – miguel

0

컴파일러는 특성 구성 및 해당 특성에 대한 할당을 설명하는 메타 데이터 만 작성합니다. 특성 자체는 리플렉션을 사용하여 특성을 나열 할 때만 인스턴스화됩니다. 리플렉션을 호출 할 때마다 해당 특성의 새 인스턴스가 만들어집니다.

그리고 나는 (전혀 반영하지 않고 문맥과 관련된) 메타를 직접 인스턴스화하지 않고 메타를 직접 확인하는 방법이 있다고 생각합니다.

관련 문제