Bonjour à tous,
une question me titille depuis quelque temps au sujet des collections de structs.
Je m'explique :Y'a-t-il copie de la struct dans un cas et pas dans l'autre ? dans le cas du foreach, il me semble que oui : si je modifie s dans le corps du foreach, la collection n'est pas altérée. Dans le cas du for, la ligne "list[i].UnePropriété = 0" lance une exception car visiblement l'indexeur this[int] de List renvoie un objet non modifiable (une rvalue, si je ne me trompe).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 List<MaStruct> list; foreach(MaStruct s in list) { int a = s.UnePropriété; } for(int i = 0 ; i < list.Count ; i++) { int a = list[i].UnePropriété; }
J'ai un projet ou pour des raisons historiques, des objets qui devraient être des classes sont des structs, avec des dizaines de champs plus ou moins complexes. Et je finis par me demander si le parcours d'une collection de structs est intrinsèquement coûteux, ou s'il y a moyen de récupérer des valeurs sans pour autant recopier la struct en entier dans la mémoire associée à la fonction courante.
En espérant avoir été clair
Partager