为什么我不能在通用的IEnumerable对象上调用ToArray方法?

8
public static T[] ToArray<T>(IEnumerable<T> e) {
  return e.ToArray();
}

我遇到了以下编译错误:
System.Collections.Generic.IEnumerable 不包含名为 ToArray 的定义,且没有接受类型为 System.Collections.Generic.IEnumerable 的第一个参数的扩展方法 ToArray 可用(是否缺少 using 指令或程序集引用?)
但是 MSDN reference 中列出了该方法。这里出了什么问题?

1
你是否缺少了一个using指令?! - ta.speot.is
3
你是否在文件中添加了 using System.Linq; 命名空间? - Oded
我不小心使用了“删除未使用的using”来移除我的Linq引用,但我还没有使用任何Linq。这只是需要注意的一点。 - Gray
1
再次阅读错误信息,特别是括号内的内容,它解释了出了什么问题 - Eric Lippert
2个回答

25
假设您正在使用.NET 3.5或更高版本,则需要在代码文件的顶部添加using指令:

假设您正在使用.NET 3.5或更高版本,则需要在代码文件的顶部添加using指令:

using System.Linq;

你还需要将程序集引用至 System.Core(虽然对于 Visual Studio 项目而言,默认情况下应该已经存在了)。


8

你缺少文件顶部的using System.Linq;

ToArrayLINQ(语言集成查询)的一部分,是在IEnumerable<T>上实现的扩展方法,因此您必须添加该使用才能使其正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接