2009-12-14 5 views
3

내가 말할 익명 형식 선언C# 익명 형식

var에 someType = 새 {이름 = "존 스키트"나이 = 10};

그러나 키워드

var is implicitly typed 

하지만 난

Response.Write(someType.GetType().Name); 

는이 기호 <>이 관련되어 무엇 <>f__AnonymousType0 2 .을 생산하고 인쇄 할 때?

+6

유형 * 논리적 *에는 이름이 없지만 메타 데이터 형식은 이름이없는 유형을 허용하지 않으므로 "불가능한"이름을 선택합니다. 익명 * 함수 *에 대해서도 똑같은 작업을 수행합니다. 당신이 똑똑하다면, 익명 함수에 대한 메소드 정보를 얻고 이름을 물을 수 있습니다. 비슷한 "불가능한"이름을 다시 얻을 수 있습니다. 우리는 클로저를위한 불가능한 이름, 반복자 블록의 특수 필드 등을 생성한다. –

+0

나는 당신이 @ Microsoft.Right 컴파일러 개발 팀에 있길 바래? – Russel

+1

그의 이름을 클릭하십시오. –

답변

11

컴파일러는 익명 형식의 일반 클래스를 생성하고 IL에서 유효하지만 C#에서는 유효하지 않은 이름을 선택하여 형식 이름과 이름 충돌을 방지합니다.

1

유형 이름의 일부입니다. 그것은 특정한 것을 의미하지는 않지만 인간이 작성한 코드와 충돌하지 않는 문자 시퀀스를 사용합니다.