在C#</string>中初始化IEnumerable <string>

时间:2011-07-04 14:54:38

标签: c# .net

我有这个对象:

IEnumerable<string> m_oEnum = null;

我想初始化它。试过

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

但它说“IEnumerable不包含添加字符串的方法。有什么想法吗?谢谢

8 个答案:

答案 0 :(得分:159)

好的,添加回答说明你可能正在寻找

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

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

答案 1 :(得分:83)

IEnumerable<T>是一个界面。您需要使用具体类型(实现IEnumerable<T>)启动。例如:

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

答案 2 :(得分:27)

string[]实现IEnumerable

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

答案 3 :(得分:17)

IEnumerable只是一个接口,因此无法直接实例化。

您需要创建一个具体的类(如List

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

然后您可以将此传递给期望IEnumerable的任何内容。

答案 4 :(得分:12)

public static IEnumerable<string> GetData()
{
    yield return "1";
    yield return "2";
    yield return "3";
}

IEnumerable<string> m_oEnum = GetData();

答案 5 :(得分:5)

您无法实例化接口 - 您必须提供IEnumerable的具体实现。

答案 6 :(得分:1)

IEnumerable是一个接口,而不是寻找如何创建接口实例,而是创建与该接口匹配的实现:创建列表或数组。

IEnumerable<string> myStrings = new [] { "first item", "second item" };
IEnumerable<string> myStrings = new List<string> { "first item", "second item" };

答案 7 :(得分:0)

您可以创建一个静态方法,该方法将返回所需的IEnumerable,如下所示:

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

或者只是做:

IEnumerable<string> myStrings = new []{ "first item", "second item"};