在C#中初始化IEnumerable <string>

mar*_*zzz 107 .net c#

我有这个对象:

IEnumerable<string> m_oEnum = null;
Run Code Online (Sandbox Code Playgroud)

我想初始化它.试过

IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};
Run Code Online (Sandbox Code Playgroud)

但它说"IEnumerable不包含添加字符串的方法.任何想法?谢谢

seh*_*ehe 173

好的,添加到您所说的答案可能也在寻找

IEnumerable<string> m_oEnum = Enumerable.Empty<string>();
Run Code Online (Sandbox Code Playgroud)

要么

IEnumerable<string> m_oEnum = new string[]{};
Run Code Online (Sandbox Code Playgroud)

  • `Enumerable.Empty <string>()`是爸爸.正是我需要的. (7认同)
  • 现在已经老了,但我会避免第二种选择。您可能希望它与与数组不兼容的其他IEnumerable进行交互。 (2认同)

Bas*_*Bas 84

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

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3"};
Run Code Online (Sandbox Code Playgroud)


Bob*_*ale 30

作为string[]实现IEnumerable

IEnumerable<string> m_oEnum = new string[] {"1","2","3"}
Run Code Online (Sandbox Code Playgroud)

  • DownVoter,为什么? (3认同)

Chr*_*isF 17

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

你需要创建一个具体的类(如a List)

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3" };
Run Code Online (Sandbox Code Playgroud)

然后你可以将它传递给任何期待的东西IEnumerable.


Kir*_*huk 12

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

IEnumerable<string> m_oEnum = GetData();
Run Code Online (Sandbox Code Playgroud)

  • 虽然有点矫枉过正,但使用收益率+1 (8认同)
  • @AdrianCarneiro +1 押韵 (4认同)

Ale*_*lex 8

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

IEnumerable<string> myStrings = new [] { "first item", "second item" };
IEnumerable<string> myStrings = new List<string> { "first item", "second item" };
Run Code Online (Sandbox Code Playgroud)


Bon*_*nyT 5

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


yan*_*ich 5

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

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

或者只是这样做:

IEnumerable<string> myStrings = new []{ "first item", "second item"};
Run Code Online (Sandbox Code Playgroud)