Question

J'ai tendance à utiliser ArrayLists des structures. Il est alors très facile à faire défiler la liste avec un foreach.

Le problème que j'ai est je ne peux pas utiliser un foreach pour modifier les structures et le contenu doivent utiliser un et typecasts en désordre.

((dataStructure)files[x]).name = here;

Y at-il une façon plus ordonnée de le faire?

Était-ce utile?

La solution

Je sais que cela semble simpliste, mais dire non à des types de valeur mutables .

Ils sont presque jamais la bonne solution au problème. Il y a très quelques exceptions près, mais les classes sont presque toujours le chemin à parcourir.

En plus, si vous utilisez vraiment un ArrayList alors vous serez encourir un coût unboxing déjà ... (Comme le dit Konrad, si vous pouvez utiliser .NET 2.0 puis utilisez génériques.)

Si vous insistez sur l'utilisation de structures mutables, puis utilisez une boucle au lieu de for foreach. Mais s'il vous plaît, s'il vous plaît changer les classes de toute façon.

Autres conseils

Oui, il y a: ne pas utiliser typées ArrayList, ces types sont déconseillés en faveur des types génériques dans System.Collections.Generic. Dans votre cas. List<T>

Vous ne pouvez toujours pas l'utiliser en conjonction avec une boucle pour modifier les valeurs foreach de la structure, mais au moins vous ne devez pas jeter.

Utilisez la version générique de ArrayList:. List<DataStructure>

De cette façon, les choses semblent beaucoup mieux:

files[x].name = here;

Oui, il y a des cas où n'est pas aussi List <T> utile. Dans ces cas, le plus vieux truc dans les travaux manuels. Au lieu de foreach, vous devez utiliser en boucle:

while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
 deletefunc(lisItem[0]);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top