我正在尝试在C#中使用Array.Contains()方法,并且由于某种原因它无法编译,尽管我相信我正在使用C#4.0,而C#应该在3.0及更高版本中支持它。
if (! args.Contains ("-m"))
Console.WriteLine ("You must provide a message for this commit.");
我收到了这个错误:
Main.cs(42,15):错误CS1061:'System.Array'不包含'Contains'的定义,并且没有扩展方法'Contains'接受'System.Array'类型的第一个参数可以找到(您是否缺少using指令或程序集引用?)
我正在从命令行编译,没有选项:“csc Main.exe”。
答案 0 :(得分:75)
您需要在程序开头添加using System.Linq;
。
答案 1 :(得分:12)
你忘记了using System.Linq
吗?
顺便说一句,如果你不能使用LINQ,还有许多其他选项,例如Array.Exists
。
答案 2 :(得分:9)
如果你不想使用linq试试
((IList<string>)args).Contains("-m")
答案 3 :(得分:3)
我有同样的问题而且我有
using System.Linq
这是因为我试图将字符串与int 进行比较,但不知此怎么说
&#39;的System.Array&#39;不包含&#39;包含&#39;的定义
答案 4 :(得分:2)
使用System.Linq 这让我每次都
答案 5 :(得分:0)
确保使用正确版本的CSC(csc /?) - 您需要2010版本才能编译4.0。 您还可能需要添加其他库(/ r选项)以便编译成功。
答案 6 :(得分:0)
可以找到包含System.Linq的答案,但是还有其他原因导致此问题。如果.Contains()的参数类型与数组的类型不匹配,则会出现此错误。
public class Product
{
public long ProductID {get;set;}
}
public IEnumerable<Product> GetProductsByID(int[] prodIDs)
{
using (var context = new MyDatabaseContext())
{
return context.Products.Where(product => prodIDs.Contains(product.ProductID)); // ['System.Array' does not contain a definition for 'Contains'] error because product.ProductID is long and prodIDs is an array of ints.
}
}