C #에서 IEnumerable <string> 초기화


115

이 개체가 있습니다.

IEnumerable<string> m_oEnum = null;

초기화하고 싶습니다. 시도

IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};

하지만 "IEnumerable에는 문자열을 추가하는 방법이 없습니다. 아이디어가 있습니까? 감사합니다.

답변:


181

좋아, 답변에 추가 당신이 할 수있는 언급 찾고

IEnumerable<string> m_oEnum = Enumerable.Empty<string>();

또는

IEnumerable<string> m_oEnum = new string[]{};

4
지금은 오래되었지만 두 번째 옵션은 피할 것입니다. 이것이 배열과 호환되지 않는 다른 IEnumerables와 상호 작용하기를 원할 수 있습니다.
Joel Coehoorn

92

IEnumerable<T>인터페이스입니다. 구체적인 유형 (을 구현 IEnumerable<T>) 으로 시작해야합니다 . 예:

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3"};

31

string[]구현는 IEnumerable

IEnumerable<string> m_oEnum = new string[] {"1","2","3"}

18

IEnumerable 인터페이스 일 뿐이므로 직접 인스턴스화 할 수 없습니다.

당신의 (a 콘크리트와 같은 클래스를 작성해야합니다 List)

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3" };

그런 다음 이것을 기대하는 모든 것에 전달할 수 있습니다 IEnumerable.



6

인터페이스를 인스턴스화 할 수 없습니다. IEnumerable의 구체적인 구현을 제공해야합니다.


1

다음과 같이 원하는 IEnumerable을 반환하는 정적 메서드를 만들 수 있습니다.

public static IEnumerable<T> CreateEnumerable<T>(params T[] values) =>
    values;
//And then use it
IEnumerable<string> myStrings = CreateEnumerable("first item", "second item");//etc..

또는 다음을 수행하십시오.

IEnumerable<string> myStrings = new []{ "first item", "second item"};
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.