문제

나는 C#의 새로운 기능 중 일부를 속도에 빠뜨리려고 노력했으며 그 중 하나는 사용하지 않았던 익명 유형입니다.

LINQ 쿼리와 관련된 사용법을 이해하고 이렇게 게시됩니다 비슷한 질문을했습니다. 내가 그물에서 본 대부분의 예제는 LINQ 쿼리와 관련이 있으며, 이는 멋지다. 나는 다소 고안된 예를 보았지만 실제로 많은 가치를 보았던 곳은 아닙니다.

실제로 유틸리티를 제공한다고 생각하는 익명 유형에 대한 새로운 용도가 있습니까?

도움이 되었습니까?

해결책

약간의 반사로 익명 유형을 사전으로 바꿀 수 있습니다.u003Cstring, object> ; Roy Osherove 블로그는 여기에 대한 그의 기술을 다음과 같습니다. http://weblogs.asp.net/rosherove/archive/2008/03/11/turn-anonymous-types-into-idictionary-of-values.aspx

Jacob Carpenter는 객체 초기화와 유사한 구문으로 불변의 개체를 초기화하는 방법으로 익명 유형을 사용합니다. http://jacobcarpenter.wordpress.com/2007/11/19/named-parameters-part-2/

익명 유형은 컬렉션의 객체의 속성에 대해 읽기 쉬운 별칭을 제공하는 방법으로 사용될 수 있습니다. foreach 성명. (솔직히 말해서, 이것은 실제로 익명 유형의 표준 사용에 지나지 않습니다. LINQ에서 개체.) 예를 들어:

Dictionary<int, string> employees = new Dictionary<int, string>
{
    { 1, "Bob" },
    { 2, "Alice" },
    { 3, "Fred" },
};

// standard iteration
foreach (var pair in employees)
    Console.WriteLine("ID: {0}, Name: {1}", pair.Key, pair.Value);

// alias Key/Value as ID/Name
foreach (var emp in employees.Select(p => new { ID = p.Key, Name = p.Value }))
    Console.WriteLine("ID: {0}, Name: {1}", emp.ID, emp.Name);

이 짧은 샘플에서는 크게 개선되지 않지만 foreach 루프는 더 길었습니다 ID 그리고 Name 가독성을 향상시킬 수 있습니다.

다른 팁

ASP.NET MVC 라우팅은 모든 곳에서 이러한 객체를 사용합니다.

때때로 나는 무언가를 수행하는 것이 유용 할 수 있다고 생각합니다. 처럼 LINQ 쿼리이지만 LINQ를 사용하지는 않지만 여전히 어떤 종류의 투영을 원합니다. 나는 LINQ 예측과 근본적으로 다른 것에 대해 현재 형태의 익명 유형을 현재 형태로 사용한다고 생각하지 않습니다.

한 가지 ~일 것이다 보는 것은 간단한 선언으로 "명명 된"유형을 만들 수있는 능력으로, 익명 유형과 동일한 방식으로 속성과 생성자를 생성 할뿐만 아니라 동일한 (유용한) 방식으로 동등한/gethashcode/tostring을 재정의 할 수 있습니다. 그런 다음 더 많은 동작이 필요할 때 이러한 유형을 "정상"유형으로 변환 할 수 있습니다.

다시 말하지만, 나는 그것을 자주 사용할 것이라고 생각하지 않지만, 특히 종종 능력은 특히 수업의 몇 가지 방법 내에서 편리 할 것입니다. 이것은 아마도 C# 5의 불변 유형에 대한 더 많은 지원을 제공하려는 더 큰 노력의 일부일 수 있습니다.

Justice가 말한 것에 추가하기 위해 ASP.NET MVC는 내가 흥미롭고 유용한 방식으로 사용한 첫 번째 장소입니다. 다음은 다음과 같습니다.


Html.ActionLink("A Link", "Resolve", new { onclick = "someJavascriptFn();" })

ASP.NET MVC는 이와 같은 익명 유형을 사용하여 HTML 요소에 임의의 속성을 추가합니다. 나는 당신이 같은 것을 달성 할 수있는 여러 가지 방법이 있다고 생각하지만, 익명 유형의 간결한 스타일을 좋아하고, 더 역동적 인 언어 느낌을줍니다.

익명 유형의 가장 큰 용도는 LINQ입니다. 실제로 그것이 생성 된 이유입니다.

LINQ 이외의 익명 유형의 이유 중 하나는 임시 구조와 같은 객체를 만드는 것입니다.

var x = new { a = 1, b = 2 };

그것은 어떤 상황에서 당신의 삶을 조금 더 쉽게 만들 수 있습니다.

반사 및 제네릭을 사용하는 경우 템플릿 이메일을 사용하는 데 사용했습니다.

일부 정보는 여기에서 찾을 수 있습니다. http://www.aaron-powell.com/blog.aspx?id=1247

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top