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?
Tester la longueur
int index = 25;
if(index < array.Length)
{
//it exists
}
Vous pouvez aussi utiliser LINQ pour y parvenir:
var exists = array.ElementAtOrDefault(index) != null;
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.
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
}
// 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
}
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.
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
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.
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.
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.