我收到错误消息:
“string[]”不包含“Cast”的定义,并且找不到接受“string[]”类型的第一个参数的扩展方法“Cast”(您是否缺少 using 指令或程序集引用?)
在下面的一段代码上:
return mNames.Cast().ToArray();
我需要什么 using 指令或程序集引用?我怎样才能发现这样的事情?
我是 C# 和 .NET 的菜鸟,我只是复制代码来完成工作,所以不要对我太技术化。
我收到错误消息:
“string[]”不包含“Cast”的定义,并且找不到接受“string[]”类型的第一个参数的扩展方法“Cast”(您是否缺少 using 指令或程序集引用?)
在下面的一段代码上:
return mNames.Cast().ToArray();
我需要什么 using 指令或程序集引用?我怎样才能发现这样的事情?
我是 C# 和 .NET 的菜鸟,我只是复制代码来完成工作,所以不要对我太技术化。
(1) 确保您正在使用 C# 3.0+
(2) 确保您的代码包含:
using System.Linq;
(3).Cast
是泛型方法,需要指定类型参数,像这样:
return mNames.Cast<AnotherType>().ToArray();
当您在using System.Linq;
文件顶部丢失时,通常会发生这种情况。
您还需要使用 .NET 3.5 或更高版本才能正常工作。System.Linq
位于程序集 System.Core.dll 中,默认情况下包含在使用 .NET 3.5 或更高版本的项目中。
编辑
仔细检查后,该代码将永远不会像编写的那样工作,因为该Enumerable.Cast()
方法是通用的,并且需要您传入要转换为的类型:例如mNames.Cast<object>().ToArray();
通常,您Cast<T>()
使用类型参数调用扩展方法,例如mNames.Cast<SomeType>()
.
无论如何,mNames
似乎已经是 a string[]
,所以你想将它转换成什么?object
不需要强制转换为,因为可以object[]
从string[]
.
即使您没有明确使用“Cast”,如果您使用 Linq 表达式并忘记“使用 System.Linq;”,也会出现此编译错误。
利用primary.AddRange(secondary);