세 번째 개체는 anonymous type입니다. 이것은 본질적으로 이름이없는 유형이며 컴파일러가 개발자가 특정 유형을 만들지 않고도 정보를 전달하거나 조작 할 수 있도록 만듭니다.
LINQ를 사용하는 코드에서이 연습을 꽤 많이 볼 수 있습니다. 익명 형식을 사용하면 투영법을 단순화 할 수 있습니다.
익명 유형은 같은 구문을 사용하여 생성됩니다 : 당신은 유일한 유형 var
(또는 object
)의 변수 익명 형식을 지정할 수 있습니다
var anonType = new { Age = 25, Color = "Red", ... };
. 동일한 유형의 동일한 필드 이름을 가진 모든 익명 형식은 컴파일러에서 동일한 것으로 간주됩니다.
익명 형식은 사용자에게 적절한 평등과 해싱 의미를 정의하므로 사전 키로 비교하고 사용할 수 있습니다.
익명 형식은 개체 [] 또는 튜플보다 우수 할 수 있습니다. 첫째, 형식이 강하게 입력됩니다. 즉, 호환되지 않는 익명 형식을 우연히 혼합 할 수 없습니다. 둘째, VisualStudio와 같은 도구를 사용하여 인텔리 센스를 제공 할 수 있습니다. 셋째, 위에서 설명한 것처럼 자동으로 비교 및 해싱 의미를 생성합니다. 마지막으로 Tuple <>과 달리 익명 형식을 임의의 수의 필드로 정의 할 수 있습니다. 이는 Tuple에서는 비실용적입니다.
저는 이해하지만, 왜 새 객체 [] {myObject (, object2, object3 등)} 대신에 이것을합니까? – NibblyPig
ActionLink는 실제로 내가 사용중인 것을 본 것입니다. ㅎ. – NibblyPig
** 이름 **은 사용법에서도 중요하기 때문에; 단지 가치가 아닙니다. –