9

我收到错误消息:

“string[]”不包含“Cast”的定义,并且找不到接受“string[]”类型的第一个参数的扩展方法“Cast”(您是否缺少 using 指令或程序集引用?)

在下面的一段代码上:

return mNames.Cast().ToArray();

我需要什么 using 指令或程序集引用?我怎样才能发现这样的事情?

我是 C# 和 .NET 的菜鸟,我只是复制代码来完成工作,所以不要对我太技术化。

4

5 回答 5

25

(1) 确保您正在使用 C# 3.0+

(2) 确保您的代码包含:

using System.Linq;

(3).Cast是泛型方法,需要指定类型参数,像这样:

return mNames.Cast<AnotherType>().ToArray();
于 2012-06-27T08:34:17.330 回答
5

当您在using System.Linq;文件顶部丢失时,通常会发生这种情况。

您还需要使用 .NET 3.5 或更高版本才能正常工作。System.Linq位于程序集 System.Core.dll 中,默认情况下包含在使用 .NET 3.5 或更高版本的项目中。

编辑

仔细检查后,该代码将永远不会像编写的那样工作,因为该Enumerable.Cast()方法是通用的,并且需要您传入要转换为的类型:例如mNames.Cast<object>().ToArray();

于 2012-06-27T08:34:48.863 回答
2

通常,您Cast<T>()使用类型参数调用扩展方法,例如mNames.Cast<SomeType>().

无论如何,mNames似乎已经是 a string[],所以你想将它转换成什么?object不需要强制转换为,因为可以object[]string[].

于 2012-06-27T08:39:03.197 回答
2

即使您没有明确使用“Cast”,如果您使用 Linq 表达式并忘记“使用 System.Linq;”,也会出现此编译错误。

于 2012-12-14T07:01:53.667 回答
-1

利用primary.AddRange(secondary);

于 2013-10-08T22:27:03.610 回答