2011-04-29 16 views
38

Estoy tratando de usar el método Array.Contains() en C#, y por alguna razón no se puede compilar, aunque creo que estoy usando C# 4.0 y C# debería soportar esto en 3.0 y posterior.C# Array.Contains() error de compilación

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

y me sale este error:

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?)

soy compilar desde la línea de comandos, sin opciones: "csc Main.exe".

+1

me pregunto cómo el uso de LINQ es demasiado localizado ... – Blindy

+4

no consigo el voto hacia abajo y cerca del eith er. Parece una pregunta perfectamente justa. –

+9

Lea el mensaje de error. Te está diciendo lo que está mal. ** Falta una referencia de ensamblaje o una directiva de uso **. –

Respuesta

72

Necesita agregar using System.Linq; al principio de su programa.

12

Olvidó using System.Linq?

Por cierto, si no puede usar LINQ hay muchas otras opciones, como Array.Exists.

+2

O 'Array.Contains', que hace lo mismo que él quiere. Pero obviamente está usando C# 3.5 así que no hay razón por la cual no pueda usar Linq. – Blindy

9

Si usted 'no quieren usar LINQ tratar

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

Asegúrese de que está utilizando la versión correcta del CSC (csc /?) - se necesita la versión 2010 para compilar para 4.0. También puede necesitar agregar bibliotecas adicionales (opción/r) para que la compilación tenga éxito.

2

que tenían el mismo problema y tuve

using System.Linq 

Fue porque yo estaba tratando de comparar cadena a int, pero por alguna razón estaba diciendo

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

Cuestiones relacionadas