J'ai ce tableau de chaînes:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
Je voudrais déterminer si stringArray
contient value
. Si tel est le cas, je souhaite localiser sa position dans le tableau.
Je ne veux pas utiliser de boucles. Quelqu'un peut-il suggérer comment je pourrais faire cela?
Array.IndexOf
soucie- t- il de la capitalisation? Le fait"text1" == "TEXT1"
?Array.IndexOf
renvoie−1
uniquement si l'index est limité à 0. Cette affaire se briserait, alors soyez conscient!var a = Array.CreateInstance(typeof(int),new int[] { 2 }, new int[] { 1 }); a.SetValue(1, 1); Console.WriteLine(Array.IndexOf(a, 26)); // 0
la source
Nous pouvons également utiliser
Exists
:la source
char
ne peut pas être converti enSystem.Predicate<char>
EDIT: Je n'avais pas remarqué que vous aviez également besoin du poste. Vous ne pouvez pas utiliser
IndexOf
directement sur une valeur de type tableau, car il est implémenté explicitement. Cependant, vous pouvez utiliser:(Ceci est similaire à l'appel
Array.IndexOf
selon la réponse de Darin - juste une approche alternative. Je ne vois pas pourquoi est implémenté explicitement dans les tableaux, mais tant pis ...)IList<T>.IndexOf
la source
if (months.Contains(model.Month))
Vous pouvez utiliser
Array.IndexOf()
- notez qu'il retournera -1 si l'élément n'a pas été trouvé et que vous devez gérer ce cas.la source
vous pouvez essayer comme ceci ... vous pouvez utiliser Array.IndexOf (), si vous voulez aussi connaître la position
la source
IMO, la meilleure façon de vérifier si un tableau contient une valeur donnée est d'utiliser la
System.Collections.Generic.IList<T>.Contains(T item)
méthode de la manière suivante:Exemple de code complet:
T[]
les tableaux implémentent en privé quelques méthodes deList<T>
, telles que Count et Contains. Comme il s'agit d'une implémentation explicite (privée), vous ne pourrez pas utiliser ces méthodes sans lancer d'abord le tableau. Cela ne fonctionne pas seulement pour les chaînes - vous pouvez utiliser cette astuce pour vérifier si un tableau de n'importe quel type contient un élément, tant que la classe de l'élément implémente IComparable.Gardez à l'esprit que toutes les
IList<T>
méthodes ne fonctionnent pas de cette façon. Essayer dIList<T>
' utiliser la méthode Add sur un tableau échouera.la source
Vous pouvez essayer ceci, il recherche l'index contenant cet élément, et il définit le numéro d'index comme int, puis il vérifie si l'int est supérieur à -1, donc s'il est 0 ou plus, cela signifie qu'il a trouvé un tel un index - car les tableaux sont basés sur 0.
la source
la source
J'ai créé une méthode d'extension pour la réutilisation.
Comment l'appeler:
la source
position
que le PO demande?la source
La méthode la plus simple et la plus courte serait la suivante.
la source
Contains
méthode vous n'avez pas cette information