我有这个对象:
IEnumerable<string> m_oEnum = null;
我想初始化它。试过
IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};
但它说“IEnumerable不包含添加字符串的方法。有什么想法吗?谢谢
答案 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"};