c#数组.Contains()编译错误

本文关键字:编译 错误 数组 Contains | 更新日期: 2023-09-27 17:53:44

我正在尝试使用数组。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"。

c#数组.Contains()编译错误

您需要在程序开头添加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选项)以使编译成功。