在C#中初始化IEnumerable <string>


115

我有这个对象:

IEnumerable<string> m_oEnum = null;

我想初始化它。尝试过

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

但它说“ IEnumerable不包含添加字符串的方法。知道吗?谢谢

Answers:


181

好的,在回答中添加您可能也在寻找

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

要么

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

4
现在已经老了,但是我会避免第二种选择。您可能希望它与与数组不兼容的其他IEnumerable进行交互。
Joel Coehoorn '18

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 只是一个接口,因此无法直接实例化。

您需要创建一个具体的类(例如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"};
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.