2010-02-16 7 views
2

지금까지 일반 목록에서 foreach 절을 사용하려고했습니다. 내가받을 컴파일 오류는 다음과 같습니다 다음에 무엇을 할 'DMS.OrderNodeList가' 'GetEnumerator를''foreach'를 일반 목록으로 사용하는 데 문제가 있습니다.

어떤 제안에 대한 공공의 정의가 포함되어 있지 않기 때문에

foreach 문은 'DMS.OrderNodeList'유형의 변수에 작동 할 수 없습니다 ?

덕분에,

+1

OrderNodeList는 열거 형 인터페이스를 구현하지 않는 것 같습니다. IEnumerable, IList, IList 등입니다. 따라서 일반적인 목록이 아닙니다. .NET과 관련하여 전혀 목록이 아닙니다. "다음에 할 일"에 대해서는 네. NET의 목록 및 제네릭을 읽으십시오. 특히, IEnumerable 및 IEnumerable 에 대해 배우고 그 의미를 파악하십시오. – bzlm

+5

Google에서 "DMS.OrderNodeList"에서 * anything *을 (를) 찾을 수 없습니다. 어떻게 정의됩니까? –

+0

konrad. 좋은. 세밀한. +1 –

답변

1

당신은 (은 일반적인 목록되지 않습니다) 당신의 정의 컬렉션의 IEnumerable 인터페이스를 구현해야합니다.

+0

IEnumerable .ToList()를 노출하는 경우 ForEach()가 옵션이 될 것입니다. 나는 IEnumerable <>을 명시 적으로 구현해야한다는 것을 의미한다고 생각하십니까? –

+0

@Sky 아이러니하게도 IEnumerable 인터페이스에는 실제로 ForEach()가 구성원이 아닙니다. 슬프게도 원래 게시물은 모호한 방식으로 "제네릭"이라는 단어를 사용하기 때문에 목록이 포괄적인지 (IEnumerable ) 필요하거나 기타를 보유하고 있다는 점에서 "제네릭"인지 여부는 알 수 없습니다. 소지품. ForEach()가 필요한 경우 IEnumerable이 필요하며 IEnumerable 은 강제로 구현되지 않습니다. – bakasan

+0

내가 나중에 들려. DMS.OrderNodeList의 베타 릴리스가 나올 때까지 기다려야 할 것입니다. –

3

다음에이 열거를 얻을 수 있습니다, Collection<OrderNode>을 확장 할 OrderNodeList 클래스에게 당신이 (당신이 컬렉션이 지금 당신을 위해 구현 될 것입니다 관리 수동으로 만든 논리의 아마 많이.)

이것은 OrderNodeListOrderNode 개체의 컬렉션이있는 것으로 가정합니다.

+0

목록 모음, 정말입니까? 연장하지 않으면 컬렉션

+0

물론 아야! –

관련 문제