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 :

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
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
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
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 ?

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