【发布时间】:2011-07-04 14:54:38
【问题描述】:
我有这个对象:
IEnumerable<string> m_oEnum = null;
我想初始化它。尝试过
IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};
但它说“IEnumerable 不包含添加字符串的方法。有什么想法吗?谢谢
【问题讨论】:
我有这个对象:
IEnumerable<string> m_oEnum = null;
我想初始化它。尝试过
IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};
但它说“IEnumerable 不包含添加字符串的方法。有什么想法吗?谢谢
【问题讨论】:
好的,添加到您可能也在寻找的答案
IEnumerable<string> m_oEnum = Enumerable.Empty<string>();
或
IEnumerable<string> m_oEnum = new string[]{};
【讨论】:
(IEnumerable<string>)new [] {"1", "2", "3"}
IEnumerable<T> 是一个接口。您需要使用具体类型(实现IEnumerable<T>)启动。示例:
IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3"};
【讨论】:
由于string[] 实现了 IEnumerable
IEnumerable<string> m_oEnum = new string[] {"1","2","3"}
【讨论】:
IEnumerable只是一个接口,不能直接实例化。
你需要创建一个具体的类(比如List)
IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3" };
然后,您可以将其传递给任何期望 IEnumerable 的对象。
【讨论】:
public static IEnumerable<string> GetData()
{
yield return "1";
yield return "2";
yield return "3";
}
IEnumerable<string> m_oEnum = GetData();
【讨论】:
您不能实例化接口 - 您必须提供 IEnumerable 的具体实现。
【讨论】:
您可以创建一个静态方法,该方法将返回所需的 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"};
【讨论】:
IEnumerable是一个接口,而不是寻找如何创建一个接口实例,创建一个与该接口匹配的实现:创建一个列表或一个数组。
IEnumerable<string> myStrings = new [] { "first item", "second item" };
IEnumerable<string> myStrings = new List<string> { "first item", "second item" };
【讨论】: