2010-01-10 1 views
2

asp.net MVC에서 일부 비디오를 보았습니다.이 질문은 일반적인 C# 하나라고 생각합니다.C#, 메소드 (new {x = y.property})는 무엇을 의미합니까?

내가 예제 코드에서 종종 발견

는 방법 paramters은 당신이 세번째 매개 변수에 무슨 일이 일어나고 있는지 설명 할 수이

blah.method("something here", 
      "Something else", 
      new { blah=item.someProperty }); 

처럼라고? 내가보고있는 비디오에서 알 수 있듯이이 메서드는 세 번째 매개 변수에 대한 객체를 사용합니다.

답변

6

익명 유형이며 item.someProperty의 값이 주어진 경우 blah이라는 속성이 있습니다.

new {Forename="Fred", Surname="Jones" } 

는 사전 및 두 개의 레코드 ("뒤따라야"와 같은보다 간단하다 : 예를 들어, 사전보다 쉽게 ​​- 어떤 경우가 키/값 쌍의 세트를 전달하는 흥미로운 방법으로 /"프레드", "성"/ "존스"). MVC는 여러 옵션에서 세미 옵션 매개 변수 (컨벤션보다 약간의 관례)를 전달하기 위해이 방법을 사용합니다. 또한 많은 jQuery와 매우 비슷합니다. 그리고 대부분의 MVC 사용자도 jQuery를 사용하므로이 두 접근법은 매우 잘 어울립니다.

내 블로그에서이 주제에 대해 (string.Format 예와 함께) 여기에서 토론합니다. 여기에서 : Pass data simply; learning from jQuery and ASP.NET MVC.

+0

저는 이해하지만, 왜 새 객체 [] {myObject (, object2, object3 등)} 대신에 이것을합니까? – NibblyPig

+0

ActionLink는 실제로 내가 사용중인 것을 본 것입니다. ㅎ. – NibblyPig

+0

** 이름 **은 사용법에서도 중요하기 때문에; 단지 가치가 아닙니다. –

4

세 번째 개체는 anonymous type입니다. 이것은 본질적으로 이름이없는 유형이며 컴파일러가 개발자가 특정 유형을 만들지 않고도 정보를 전달하거나 조작 할 수 있도록 만듭니다.

LINQ를 사용하는 코드에서이 연습을 꽤 많이 볼 수 있습니다. 익명 형식을 사용하면 투영법을 단순화 할 수 있습니다.

익명 유형은 같은 구문을 사용하여 생성됩니다 : 당신은 유일한 유형 var (또는 object)의 변수 익명 형식을 지정할 수 있습니다

var anonType = new { Age = 25, Color = "Red", ... }; 

. 동일한 유형의 동일한 필드 이름을 가진 모든 익명 형식은 컴파일러에서 동일한 것으로 간주됩니다.

익명 형식은 사용자에게 적절한 평등과 해싱 의미를 정의하므로 사전 키로 비교하고 사용할 수 있습니다.

익명 형식은 개체 [] 또는 튜플보다 우수 할 수 있습니다. 첫째, 형식이 강하게 입력됩니다. 즉, 호환되지 않는 익명 형식을 우연히 혼합 할 수 없습니다. 둘째, VisualStudio와 같은 도구를 사용하여 인텔리 센스를 제공 할 수 있습니다. 셋째, 위에서 설명한 것처럼 자동으로 비교 및 ​​해싱 의미를 생성합니다. 마지막으로 Tuple <>과 달리 익명 형식을 임의의 수의 필드로 정의 할 수 있습니다. 이는 Tuple에서는 비실용적입니다.