내 프로젝트에는 MyClass
이 있으며 IMyClass
을 구현합니다. 다른 항목의 목록을 변환하여 IMyClass
의 목록을 반환해야합니다. 간단히하기 위해 다른 항목을 해당 생성자에 전달하여 즉 new MyClass(item)
과 같이 MyClass
을 만들 수 있다고 가정합니다.람다에 던지거나 IEnumerable을 캐스팅해야합니까?
var option1 = items.Select(item => new MyClass(item)).Cast<IMyClass>().ToList()
var option2 = items.Select(item => new MyClass(item) as IMyClass).ToList()
, 한 번에 모든 항목을 캐스팅 :
은 (내가 아는 한) 같은 결과를 다음 두 줄을 고려 내 인터페이스 및 한 번 목록을 생성 할 수 있습니다. 내가 옳다면 옵션 2가 더 똑똑해 질 것입니다. 그러나 은 옵션 # 2와 같은 코드를 사용하여 본 적이 없으며 나머지 C# 커뮤니티가하지 못했던 영리한 것을 생각해 내기에 충분히 똑똑하지 않다고 생각하는 경향이 있습니다.
옵션 2는 더 심미적으로 즐거운 옵션이라고 생각하지만 그건 저뿐입니다.
내 질문 :은 제 생각으로는 # 2 더 좋은 생각입니다. 내가 누락되었거나 다른 이유 중 하나 인 옵션 # 1을 계속 사용하고자하는 이유가 있습니까? 또는 내가 완전히 실종 된 똑똑한 3 분의 1이있을 때 아마도 어리석은 아이디어 두 개를 비교했을까요?
enumerables가 게으르고 구성 가능하다는 것을 잊지 마십시오! 옵션 1은 그것을 두 번 열거하지 않을 것입니다 ... –
왜'MyClass'가'IMyClass'를 구현하면 캐스트해야합니까? –
당신은 추론없이 언제든지 유형을 철자 할 수 있다는 것을 알고 있습니까? 이 메소드는'IEnumerable'를 리턴합니다. :) –