2013-07-12 2 views
2

C#에서 이상한 형식의 구문을 발견하고 의미와 사용 방법을 파악하려고했습니다. 여기에 그물에 대한 문서가없는 것 같습니다.이 구문의 의미는 무엇입니까? new {}

object data = new { var1 = someValue, var2 = anotherValue } 

이 구문에는 오류가 없으므로 C#에서 허용하는 것으로 가정합니다. 무슨 뜻이에요?

+3

익명 유형 인스턴스화 : http://msdn.microsoft.com/en-us/library/vstudio/bb397696.aspx – pcnThird

+2

그것은 기본적으로 클래스처럼 작동합니다 전형적으로 익명 타입을 보존하기 위해'var data = new {...};'를 사용할 것입니다. –

답변

8

익명 형식입니다.

class anonymous 
{ 
    public readonly type var1; // "type" is the type of somevalue 
    public readonly type var2; // "type" is the type of anothervalue 
} 

var data = new anonymous { var1 = somevalue, var2 = anothervalue }; 
+2

회원에게'readonly '를 덧붙이 기 위해 편집 됨 –

+1

@TimothyShields 흠,'readonly' 역시 너무 정확하지 않습니다. 그것들은 getter를 가진 속성이지만 setter는 없으므로'public type var1 {get {...}} '과 같은 서명이됩니다. –

+0

@JeppeStigNielsen 나는 알고있다. 나는 대담하게 변화하는 cshplpler의 대답없이 더 가깝게 지낼 예정이었다. 'readonly' 힌트가 없다면, 누군가는 이것이 변경 가능한 필드라고 생각할지도 모른다. –

1

이 구문은 "익명 형식"의 인스턴스를 만듭니다. 아직 완전히 유형에 안전하지만 정적으로 유형이 지정된 객체이지만 객체를 만들 때 원하는 속성을 추가 할 수 있습니다.

자세한 내용은 here입니다.

익명 형식을 반환 형식으로 사용하거나 멤버 형식 필드를 사용하여 선언 할 수는 없습니다. 형식 이름을 제공 할 필요가 없으므로 형식 이름을 제공해야하는 곳에서는 사용할 수 없습니다.

관련 문제