web-dev-qa-db-fra.com

Existe-t-il un index de tableau?

J'ai hérité d'un code au travail très odorant. J'espère trouver la solution la plus simple possible.

Existe-t-il un moyen de vérifier si un nombre quelconque est un élément valide dans un tableau?

Exemple - Je dois vérifier si le tableau [25] existe.

De préférence, je préférerais le faire sans faire un foreach () à travers le tableau pour trouver les lignes.

Y at-il un moyen de faire cela, ou suis-je coincé avec boucle foreach?

73
splatto

Tester la longueur

int index = 25;
if(index < array.Length)
{
    //it exists
}
128
Eoin Campbell

Vous pouvez aussi utiliser LINQ pour y parvenir:

var exists = array.ElementAtOrDefault(index) != null;
74
Shimmy

Qu'entendez-vous exactement par "est un élément valide"? Vous pouvez juste faire:

if (array.Length >= 26)

ce qui vous dira si 25 est un index valide dans le tableau ou non (en supposant une limite inférieure à 0).

Si vous avez besoin de savoir si c'est non nul ou non, utilisez simplement:

if (array[25] != null)

(ou une combinaison des deux).

Si cela ne vous aide pas, donnez un sens plus précis à "valide" pour votre problème.

17
Jon Skeet

En supposant que vous souhaitiez également vérifier si l'élément n'est pas null

if (array.Length > 25 && array[25] != null)
{
    //it exists
}
10
Martin Harris
// I'd modify this slightly to be more resilient to a bad parameter
// it will handle your case and better handle other cases given to it:

int index = 25;

if (index >= 0 && index < array.Length)
{
    // Array element found
}
2
theJerm

Vous pouvez utiliser la longueur du tableau et voir si votre nombre arbitraire se situe dans cette plage. Par exemple, si vous avez un tableau de taille 10, le tableau [25] n'est pas valide car 25 n'est pas inférieur à 10.

1
jean

Vous pouvez plutôt utiliser une liste afin de vérifier son existence.

List<int> l = new List<int>();
l.Add(45);
...
...

if (l.Count == 25) {
  doStuff();
}
int num = 45;
if (l.Contains(num)) {
  doMoreStuff();
}

array.length vous dira combien d'éléments sont dans un tableau

1
Mike Miller

On dirait que vous utilisez un tableau pour stocker différents champs. C'est définitivement une odeur de code. J'éviterais autant que possible d'utiliser des tableaux, car ils ne conviennent généralement pas (ou ne sont pas nécessaires) dans du code de haut niveau.

Le passage à un dictionnaire simple peut constituer une option viable à court terme. Comme le ferait une grande classe de sacs de propriétés. Il y a beaucoup d'options. Le problème que vous avez maintenant est juste un symptôme de mauvaise conception, vous devriez envisager de résoudre le problème sous-jacent plutôt que de simplement corriger la mauvaise conception afin que cela fonctionne un peu, pour la plupart, pour le moment.

0
Wedge

Vous pouvez vérifier si l'index est inférieur à la longueur du tableau. Cela ne vérifie pas les valeurs NULL ni les autres cas impairs dans lesquels une valeur peut être affectée à l'index, mais pas explicitement.

0
JB King

Vous pouvez vérifier la longueur du tableau pour voir si l'item 25 est valide dans le sens où il se trouve dans le tableau. Vous pouvez alors utiliser

if (array.Length > 25)
{ 
   if (array[25] != null)
   {
       //good
   }
}

pour voir si l'élément de tableau lui-même a été défini.

0
Colin Desmond