문제

이 많이 봤어요 설명의 방법 익명 형식의 작동,하지만 그들이 어떻게 정말 유용합니다.어떤 것이 있는 시나리오에는 익명 형식을 제시하기 위하여 이용될 수 있습에서는 잘 설계된 프로그램입니까?

도움이 되었습니까?

해결책

익명 형식으로 할 수 없 디자인의 시스템에서 또는 클래스 수준이다.그들이 도구 개발자가 사용할 때 코딩이다.

나지 않도 익명의 유형으로 유형에 따-se.나는 그들을 사용으로 주로 방법은 수준의 익명의 튜플이 있습니다.면 쿼리 데이터베이스 다음 조작하는 결과,오히려 만드는 익명 형식 및 사용하는 것보다는 선언하는 새로운 유형는 사용되지 않거나 알려진 범위 밖의 내 방법입니다.

예를 들어:

var query = from item in database.Items
            // ...
            select new { Id = item.Id, Name = item.Name };

return query.ToDictionary(item => item.Id, item => item.Name);

아무도에 대한 관심`은 익명 형식입니다.그것은 거기에 그래서 당신은 없을 선언하는 다른 클래스입니다.

다른 팁

에서 LINQ 에서 작업(76 페이지 섹션 2.6.3):

...익명 형식에 대한 훌륭한 도구를 빠르고 간단한 임시 결과입니다.우리는 필요하지 않는 클래스를 선언하는 개최 일시적인 결과 감사하는 임시 형식입니다.

기본적으로 그들에게 유용한 정보에 대해서 일시적으로.무엇이 더 필요합의 사용을 반영하고 확인할 수 있게 되었습니다 문제입니다.예제들을 줄 위에서 인용된 예약은 서면으로 콘솔 id,이름,그리고 메모리의 양을 취하여 각 프로세스를 실행.그들이 만드는 익명 형식,그것을 추가 목록을(모든 하나의 문)및 다음 사용하 ObjectDumper 출력니다.따라서 코드가 더 이상 필요하지 않 별도로 선언한 클래스를 보유하 id,이름과 메모리 사용되지만 그것의 모든 암시적으로 선언을 가져 줄 수을 4:

var pl = new List<Object>();
foreach(var p in Process.GetProcesses())
  pl.Add(new {p.Id, p.ProcessName, Memory=p.WorkingSet64});
ObjectDumper.Write(pl);

가장 인기 사용의 익명 형식 지정하기 위한 계획에 LINQ SQL 쿼리가 있습니다.

이 쿼리

from x in db.Table1 select new {x.Column1, Alias2=x.Column2}

로 변환됩니다 이 SQL:

SELECT Column1, Column2 AS Alias2 FROM Table1

익명 형태를 만들 수 있습니다,ad hoc 계획 정의하지 않고 형식에 대한 감사합니다.컴파일러는 형식을 정의합니다.

을 만들 때 유형에 대한'사고를 던져 있습니다.이 올 때문에 읽습니다.것을 만들 수 있는 방법 구조를 가진 분야에 대한 즉 LINQ 쿼리가 있습니다.을 반환하는 구조체/형식을 지정한 필드만 있습니다.하지 않을 경우 이를 위해,당신을 선언해야.Net 유형에 대한 각각의 고유 한 조합의할 필드를 검색 할 수 있습니다.

을 함께 사용하 Linq.

그것이 중요하는 LINQ 지,사용하는 익명 형식입니다.를 작성할 수도 있습니다 정상적인 개체 구조 후 선택합니다.

var query = from item in database.Items
// ...
select new Person(item.id, item.Name)

이렇게 하면 에서 추한 반사 프로그램입니다.

@Wouter:

var query = from item in database.Items
select new Person
{
ID =item.id,
NAME= item.Name
};

어디에고 있는 진짜 속의 사람이 클래스입니다.

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