Remarque : La question porte sur les tableaux de chaînes de caractères. Les routines mentionnées ne doivent pas être mélangées avec la méthode .Contains des chaînes de caractères individuelles.
Je voudrais ajouter une réponse complémentaire concernant les différentes versions de C#, et ce pour deux raisons :
-
La réponse acceptée nécessite Linq, qui est parfaitement idiomatique du C#, mais qui n'est pas sans coût et n'est pas disponible dans le C# 2.0 ou inférieur. Lorsqu'il s'agit d'un tableau, les performances peuvent avoir de l'importance. Dans certaines situations, il est donc préférable de conserver les méthodes Array.
-
Aucune réponse ne répond directement à la question où il était également demandé de mettre cela dans une fonction (Comme certaines réponses mélangent également des chaînes de caractères avec des tableaux de chaînes de caractères, ce n'est pas complètement sans importance).
Array.Exists() est une méthode C#/.NET 2.0 et ne nécessite pas 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 pourriez écrire une méthode d'extension propre (C# 3.0 et plus) pour ajouter le sucre syntaxique permettant d'obtenir le même ".Contains" que pour les chaînes de caractères pour 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()
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 eux-mêmes directement.