web-dev-qa-db-fra.com

Erreur de compilation C # Array.Contains ()

J'essaie d'utiliser la méthode Array.Contains () en C # et, pour une raison quelconque, la compilation a échoué, même si je crois que j'utilise le C # 4.0, et C # devrait le prendre en charge dans les versions 3.0 et ultérieures.

if (! args.Contains ("-m"))
    Console.WriteLine ("You must provide a message for this commit.");

Et je reçois cette erreur:

Main.cs (42,15): Erreur CS1061: 'System.Array' ne contient pas de définition pour 'Contains' et aucune méthode d'extension 'Contains' n'accepte un premier argument de type 'System.Array' (vous êtes manque une directive d'utilisation ou une référence d'assemblage?)

Je compile à partir de la ligne de commande, sans option: "csc Main.exe".

41
Ashton K

Vous devez ajouter using System.Linq; au début de votre programme.

75
Blindy

Avez-vous oublié using System.Linq?

En passant, si vous ne pouvez pas utiliser LINQ, il existe de nombreuses autres options telles que Array.Exists .

12
Jon

Si vous ne voulez pas utiliser linq, essayez 

((IList<string>)args).Contains("-m")
9
CharithJ

J'ai eu le même problème et j'avais

using System.Linq

C’est parce que j’essayais de comparer chaîne à int , mais de toute façon cela disait 

'System.Array' ne contient pas de définition pour 'contient' 

3
Yohan Dahmani

utilisez System.Linq Cela me fait chaque fois

2
dewijones92

Assurez-vous que vous utilisez la version correcte de CSC (csc /?) - vous avez besoin de la version 2010 pour compiler pour 4.0 . Vous devrez peut-être également ajouter des bibliothèques supplémentaires (option/r) pour que la compilation réussisse.

0
Alexei Levenkov

Les réponses disant d’inclure System.Linq sont tout à fait exactes, mais il existe une autre cause à ce problème. Si le type de l'argument pour .Contains () ne correspond pas au type du tableau, vous obtiendrez cette erreur.

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.
    }
}
0
Joakim M. H.