Remarque: la question concerne les tableaux de chaînes. Les routines mentionnées ne doivent pas être mélangées avec la méthode .Contains des chaînes simples.
Je voudrais ajouter une réponse étendue faisant référence à différentes versions de C # et pour deux raisons:
La réponse acceptée nécessite Linq qui est parfaitement idiomatique C # alors qu'il n'est pas gratuit et n'est pas disponible en C # 2.0 ou inférieur. Lorsqu'un tableau est impliqué, les performances peuvent être importantes, il existe donc des situations dans lesquelles vous souhaitez rester avec les méthodes Array.
Aucune réponse ne répond directement à la question où il a également été demandé de mettre cela dans une fonction (comme certaines réponses mélangent également des chaînes avec des tableaux de chaînes, ce n'est pas complètement sans importance).
Array.Exists () est une méthode C # /. NET 2.0 et n'a pas besoin de Linq. La recherche dans les tableaux est O (n). Pour un accès encore plus rapide, utilisez HashSet ou des collections similaires.
Depuis .NET 3.5, il existe également une méthode générique Array<T>.Exists():
public void PrinterSetup(string[] printer)
{
if (Array.Exists(printer, x => x == "jupiter"))
{
Process.Start("BLAH BLAH CODE TO ADD PRINTER VIA WINDOWS EXEC");
}
}
Vous pouvez écrire une propre méthode d'extension (C # 3.0 et supérieur) pour ajouter le sucre syntaxique pour obtenir le même / similaire ".Contains" que pour les chaînes de tous les tableaux sans inclure Linq:
// Using the generic extension method below as requested.
public void PrinterSetup(string[] printer)
{
if (printer.ArrayContains("jupiter"))
{
Process.Start("BLAH BLAH CODE TO ADD PRINTER VIA WINDOWS EXEC");
}
}
public static bool ArrayContains<T>(this T[] thisArray, T searchElement)
{
// If you want this to find "null" values, you could change the code here
return Array.Exists<T>(thisArray, x => x.Equals(searchElement));
}
Dans ce cas, cette ArrayContains()méthode est utilisée et non la méthode Contains de Linq.
Les méthodes .Contains mentionnées ailleurs font référence à List<T>.Contains(depuis C # 2.0) ou ArrayList.Contains(depuis C # 1.1), mais pas aux tableaux lui-même directement.