2011-04-29 17 views
38

Sto tentando di utilizzare il metodo Array.Contains() in C# e per qualche motivo non riesco a compilare, anche se credo che sto usando C# 4.0 e C# dovrebbe supportare questo in 3.0 e versioni successive.Errore di compilazione C# Array.Contains()

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

e ottengo questo errore:

Main.cs(42,15): error CS1061: 'System.Array' does not contain a definition for 'Contains' and no extension method 'Contains' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an assembly reference?)

sto la compilazione dalla riga di comando, senza opzioni: "csc Main.exe".

+1

Mi chiedo come usare Linq sia troppo localizzato ... – Blindy

+4

Non ho il voto negativo e chiudo eith ER. Sembra una domanda perfettamente giusta. –

+9

Leggere il messaggio di errore. Ti sta dicendo cosa c'è che non va. ** Manca un riferimento all'assembly o una direttiva using **. –

risposta

72

È necessario aggiungere using System.Linq; all'inizio del programma.

12

Hai dimenticato using System.Linq?

A proposito, se non è possibile utilizzare LINQ ci sono molte altre opzioni come Array.Exists.

+2

Oppure 'Array.Contains', che fa la stessa cosa che vuole. Ma ovviamente sta usando il C# 3.5, quindi nessuna ragione per cui non potesse usare Linq. – Blindy

9

Se non' vuole usare LINQ provare

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

Assicurarsi che si sta utilizzando corretta versione di CSC (CSC /?) - è necessario versione 2010 per compilare per 4,0. Potrebbe anche essere necessario aggiungere ulteriori librerie (opzione/r) per la compilazione per avere successo.

2

uso System.Linq Questo mi prende ogni volta

2

Ho avuto lo stesso problema e ho avuto

using System.Linq 

E 'stato perché stavo cercando di confrontare stringa in int, ma in qualche modo diceva

'System.Array' does not contain a definition for 'Contains'