Bonjour,
Je suis en train de coder un programme avec VB.NET, en suivant les recommandations pour avoir un code propre et rapide (donc avec Option Explicit et Option Strict ON)
J’utilise pas mal les collections. Chacune de mes collections ne contient que des objets du même type, bien que ce ne soit pas une obligation en VB.NET
Lorsque je parcours la collection avec For Each pas de problème :
Par contre, lorsque je dois utiliser une boucle For Next classique, où lorsque je dois appeler le nième membre de la collection via la méthode .item, je suis obligé de recourir à un CType :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim Liste_Formes_2D As Collection ... Dim Fo As Forme_2D For Each Fo In Liste_Formes_2D ... Next
N’y a-t-il pas moyen, en VB.NET, de déclarer non pas des collections d’objets génériques, mais de déclarer une collection ne contenant qu’un type d’objet précis, dans mon exemple déclararer la collection Liste_Formes_2D comme étant une liste de Forme_2D ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Dim Liste_Formes_2D As Collection ... Dim Fo As Forme_2D Dim j As Integer ... For j = Liste_Formes_2D.Count To 1 Step -1 ... Fo = CType(Liste_Formes_2D.Item(j), Forme_2D) ... Next
Cela éviterait d’appeler CType, cela améliorerais la performance, et le code serai plus propre (rien ne m'empêche d'ajouter par erreur un objet autre que Forme_2D à la collection Liste_Forme_2D et ce type de bug risque d'être assez difficile à détecter)
Il y a longtemps en C++ (sous DOS) je pouvais déclarer une liste comme étant une liste de pointeur d’un certain type d’objets, je voudrais faire la même chose avec VB.NET
Merci
Partager