2013-07-03 8 views
34

List가 IEnumerable 유형이라는 것을 알게 된 비슷한 게시물을 읽음으로써. 하지만 실제로이 둘의 실제 차이점이 무엇인지 궁금합니다.List와 IEnumerable의 실제적인 차이점

  • 둘 사이의 실제적인 차이점은 무엇입니까 : 항상 목록을 사용 결코 IEnumerable을 사용한 사람에게

    ?

  • 어떤 시나리오가 다른 시나리오보다 우수한 것입니까? 여기

실제적인 예를입니다 : 우리는 네 개의 문자열을 저장 알파벳순으로 주문, 다른 함수에 전달하고 사용자에게 결과를 보여주고 싶어요. 우리는 무엇을 사용하고 왜 그럴까요?

누군가 나를 나에게 알리거나 올바른 방향으로 나를 가리켜 주길 바랍니다. 미리 감사드립니다.

+2

'List'는'IEnumerable' 형식이 아니며'IEnumerable'이 제시하는 계약 (즉, 'IEnumerable'으로 사용될 수 있습니다)을 충족시킵니다. 문자열을 저장하려면 목록을 사용하십시오. 클래스가 아니기 때문에 열거 형을 사용할 수 없습니다. 원하는 경우 열거 형 목록에 액세스 할 수 있습니다. –

+6

중복 된 질문으로 표시해서는 안됩니다. 다른 질문은 LINQ를 사용할 때 IEnumberable vs List에 대해 이야기합니다. 이 질문은 LINQ에 관한 질문이 아닙니다. – JMS10

답변

114

IEnumerable과 List 간의 중요한 차이점 중 하나는 IEnumerable과 읽기 전용 사이의 중요한 차이점은 IEnumerable은 읽기 전용이고 List는 그렇지 않습니다.

따라서 어떤 종류의 영구 변경을 컬렉션에 적용해야한다면 (목록에 & 추가) List가 필요합니다. 컬렉션을 읽고, 정렬하고/또는 필터링해야한다면 IEnumerable만으로도 충분합니다.

실용적인 예에서 한 번에 하나씩 4 개의 문자열을 추가하려면 목록이 필요합니다. 그러나 컬렉션을 한 번에 인스턴스화하는 경우 IEnumerable을 사용할 수 있습니다.

IEnumerable firstFourLettersOfAlphabet = new[]{"a","b","c","d"}; 

그런 다음 원하는대로 LINQ를 사용하여 목록을 필터링하거나 정렬 할 수 있습니다.

+22

"IEnumerable은 읽기 전용이며 List는 아닙니다." 마지막으로 실제로 차이점에 대한 일반적인 아이디어를 제공하는 구체적인 대답입니다. 대단히 감사합니다 :) – Robin

+1

Perfect !! Nice & Simple Answer –

+1

List와 함께 할 수없는 IEnumerable로 할 수있는 멋진 다른 것들이 있습니다. yield 키워드를 확인하십시오. https://www.kenneth-truyers.net/2016/05/12/yield-return-in-c/ – Kevin

10

List 이외의 많은 형식은 ArrayList와 같은 IEnumerable을 구현합니다. 따라서 하나의 장점은 다른 콜렉션 유형을 동일한 함수에 전달할 수 있다는 것입니다.

관련 문제