목록으로? 해결 방법이 있습니까?변환 목록 인터페이스
답변
최대 당신은
List<ISomeInterface> interfaceList = new List<ISomeInterface>(list.Cast<ISomeInterface>());
이이 경우에 List<ISomeInterface>
의 생성자가 IEnumerable<ISomeInterface>
을 취한다는 것입니다 작동하지 않는 이유는 다음을 수행하여이 문제를 해결할 수 있습니다. 목록 변수의 유형은 IEnumerable<objectA>
로만 변환 가능합니다. objectA
은 ISomeInterface
으로 변환 될 수 있지만 IEnumerable<objectA>
유형은 IEnumerable<ISomeInterface>
으로 변환 할 수 없습니다.
이 변경 사항은 C# 4.0에서 언어에 Co 및 Contravariance 지원을 추가하고 이러한 변환을 허용합니다.
이것은 C# 4.0에서 처리되었으므로 C# 3.5에서는 직접 처리 할 수 없습니다. 그러나이 목록에서 새 목록을 만들고 확장 연산자 또는 foreach를 사용하여 C# 4에서
공분산
contravariance (항상 잘못된 것임)로 제공 될 유형의 캐스트보다 느리지 만 명확하게 처리 할 수 있습니다.
야렛 내 의견을 참조하십시오 모두 ... 샘플 코드가 동일하고 당신이 원하는 각 하나를 사용할 수 있습니다 위의
var interfaceList = list.Cast<ISomeInterface>().ToList()
또는
List<ISomeInterface> interfaceList = list.Cast<ISomeInterface>().ToList()
- C# 3.5와 같은 것은 없습니다. –
Arg, Futurama의 보우 라 츄라를 상기시켜줍니다. Linq는 언어 변경이 있었지만 C# 3.5까지 소개되지 않았기 때문에 C#은 linq 확장이 주어질 때까지 2.0이었습니다. WCF는 단순히 3.0에서 프레임 워크 업그레이드였습니다. – Spence
가장 쉬운 & 짧은 방법은 다음과 같습니다
오른쪽에서 ToList()를 사용하는 것이 좋습니다. 그러나 var를 사용하면 변수의 실제 유형이 숨겨 지므로이 작업을 수행하는 것은 좋지 않습니다. 목록
@ KovácsEde로이 양식을 사용했습니다. 언급 한 내용에 따르면이 답변에 대한 두 번째 형식이 추가되었지만 둘 모두 동일합니다. 'var'을 사용할 때, 실제로는 더 짧은 형식으로 코드를 작성하고 항상'= '의 오른쪽을보고 변수 유형을 인식 할 수 있습니다. 반면에 우리가'var'을 사용할 때조차도, C# 컴파일러는 변수의 실제 타입을 인식하기에 충분합니다. 따라서 더 짧은 구문을 사용하려면'var'을 사용하고'= '오른쪽의 코드에서 변수 유형을 인식하면 다른 형식을 사용할 수 있습니다. – RAM
- 1. 인터페이스 목록 - java
- 2. 일반 인터페이스 목록
- 3. 제네릭 목록 인터페이스 ... newb 질문
- 4. 일반 인터페이스 : 특정 항목의 목록
- 5. Groovy 목록 변환
- 6. 표시 목록 및 변환
- 7. 변환 목록 (C# 3.0)
- 8. WCF에서 변환 및 반환 목록
- 9. 목록 상자를 텍스트 상자로 변환
- 10. 다시 짧게 - 인터페이스 구현 목록 표시
- 11. 설정 목록 <? extends 인터페이스 1>
- 12. 주석이있는 경우 변환 된 클래스에 인터페이스 추가
- 13. WCF 직렬화 및 인터페이스
- 14. Java 1.5에서 일반 목록 유형을 일반 목록 유형으로 변환
- 15. 드롭 다운 목록 형식으로 변환 후
- 16. LINQ 변환 및 필터 목록 2 부
- 17. 변환 목록 <double[]>이
- 18. 속성으로서의 인터페이스
- 19. 인터페이스?
- 20. 인터페이스
- 21. 웹 사용자 인터페이스. 새 항목 및 항목 목록 추가
- 22. Fluent 인터페이스/확장 방법 - 평면 목록을 탐색 트리로 변환
- 23. 인터페이스 구현 vs. 인터페이스 제공
- 24. 인터페이스 상속 및 하위 인터페이스
- 25. 목록
- 26. ctags를 및 포트란의 인터페이스
- 27. 목록을 Prolog에서 용어로 변환
- 28. ATL "구현 인터페이스 마법사"
- 29. C# 바인딩 목록 문제
- 30. 문제점 인터페이스 이름 지정
@itowlson, 사용자가 샘플에서 수행하는 작업입니다. 추가 동작이 원하는 솔루션의 일부임을 지정하지 않았습니다. – JaredPar
당신은 C# 3.5가 아니라 .NET 3.5를 의미합니다. –