컬렉션에 List<T>
또는 심지어 클래스 내 arraylist를 사용하는 경우 IEnumerable을 구현하고 열거자를 반환 할 때 자신의 열거 클래스를 만들고 싶습니다. 나는 사람들이 자신의 enumerable 클래스를 만들고 현재, movenext 등을 구현하는 온라인 예제를 볼 수 있습니다 ...자신 만의 IEnumerable 클래스를 만드는 경우
답변
글쎄, 당신이 컬렉션 클래스를 가지고 있다면 Enumerable이라는 다른 컬렉션을 래핑하지 않고 정확히 할까요.
그렇긴해도 수동으로 열거 형을 정의하는 경우에도 항상 yield 키워드를 사용하는 것을 선호합니다. 현재/이동을 정의하는 사람들의 대부분의 예는 수확량 또는 사용 방법을 알지 못합니다. (나는 정확한 이유에 대해 Current/Move를 정의한 열거 가능한 클래스를 구현했다.)
기본 컬렉션이 오래되었고 IEnumerable<T>
이 아니라 단지 IEnumerable
을 구현하지 않을 수도있다. 컬렉션이 강력하게 입력 된 경우 열거자를 반환하는 것 이상의 작업을 수행해야합니다 (적어도 .Cast<T>()
호출 일 것입니다).
기본 컬렉션이있는 경우 공개적으로 노출하고 싶지 않은 일부 개인 중첩 클래스 (사용자 정의 키 - 값 쌍일 수도 있음)의 컬렉션 일 수도 있습니다. 기존의 열거자를 전달하는 대신 .Select 호출을 반환해야 할 수도 있습니다 (그러나 실제로는 자신 만의 반복자를 구현할 필요는 없습니다).
이러한 예는 사전 제네릭 일 수 있습니까? 제네릭을 사용하지 않는다면 IEnumerable을 구현하고 메서드를 구현해야한다는 것을 알 수 있습니다.
파일의 줄을 반복하면서 메모리에 모두로드하지 않으려한다고 가정 해 보겠습니다. 모든 내용을 메모리에로드하는 대신 필요에 따라 다음 줄을 읽는 IEnumerable<string>
을 반환 할 수 있습니다. @Servy가 언급 한 것처럼 이런 유형의 상황에 대해 yield
을 사용하는 것을 선호합니다.
- 1. 자신 만의 클래스를 만드는 것보다 멤버쉽을 사용하는 것
- 2. inet_pton inet_ntop 자신 만의 롤
- 3. SilverLight를 사용하여 자신 만의 객체 클래스를 만들 수있는 방법
- 4. php oauth pecl 또는 자신 만의 클래스를 만드십시오
- 5. 자신 만의 확인 된 예외 만들기
- 6. 안드로이드에 자신 만의 액션 바 생성
- 7. Ctrl 키로 내 자신 만의 단축키를 만드는 방법
- 8. jQuery validation plugin : 자신 만의 메시지를 만드는 법
- 9. 안드로이드에서 자신 만의 MediaPlayer를 만들 수 있습니까?
- 10. xcode는 자기 자신 만의 메소드를 호출합니다
- 11. JVectorMap으로 자신 만의 텍스트가있는 팝업 윈도우
- 12. 자신 만의 전기를 편집하도록 사용자를 확인하는 방법
- 13. MailChimp로 자신 만의 사용자 정의 양식을 사용하십시오.
- 14. 자신 만의 관리 빈과 타입을 앞에 입력
- 15. 자신 만의 VS C++ 빌드 매크로 정의
- 16. Erubis로 자신 만의 태그/함수 만들기
- 17. Eclipse 플러그인을 통해 자신 만의 환영 페이지
- 18. XAML에서 자신 만의 위젯을 만들 수 있습니까?
- 19. 자신 만의 HttpException을 재정의, 확장 또는 롤백 하시겠습니까?
- 20. 미디어 위키에서 내 자신 만의 사용자 그룹을 만들려면 어떻게해야합니까?
- 21. Django - 자신 만의 CMS 만들기 - 아키텍처에 대한 조언
- 22. ReSharper : 내 자신 만의 컨텍스트 액션을 만들 수 있습니까?
- 23. 자신 만의 XML 파서/XML 파싱 알고리즘 롤?
- 24. EDMX에서 업데이트하는 동안 자신 만의 생성 된 저장하기
- 25. 아이폰에서 내 자신 만의 색상으로 텍스트 색상 바꾸기
- 26. Datamapper, 어떻게 자신 만의 객체 메소드를 정의 할 수 있습니까?
- 27. 자신 만의 메시지 루프를 굴려 라, 어떤 함정이라도?
- 28. 전체 캘린더에서 자신 만의 뷰를 만들 수 있습니다.
- 29. 목록을 기반으로하는 자신 만의 모나 딕 유형 만들기
- 30. 자신 만의 JTA 트랜잭션을 생성 할 수 있습니까?
온라인에서 찾은 예제는 C# 지원 이터레이터 블록보다 먼저 작성되었을 수 있습니다. – phoog