我正在尝试使用数组。c#中的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): error CS1061: 'System. 'Array'没有包含'Contains'的定义,也没有扩展方法'Contains'接受类型为'System '的第一个参数。Array'可以找到(您是否缺少using指令或程序集引用?)
我从命令行编译,没有选项:"csc Main.exe"。
您需要在程序开头添加using System.Linq;
你忘记using System.Linq
了吗?
顺便说一下,如果你不能使用LINQ,还有很多其他的选择,如Array.Exists
。
如果你不想使用linq试试
((IList<string>)args).Contains("-m")
回答说要包括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.
}
}
我有同样的问题,我有
using System.Linq
这是因为我试图比较string和int,但不知何故它显示
"系统。数组'不包含'Contains'的定义
请确保您使用的是正确版本的CSC (CSC/?) -您需要2010版本才能编译4.0。您可能还需要添加额外的库(/r选项)以使编译成功。