Bonjour,

j'utilise un dictionnaire trié avec comme clé une structure (simple)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 
Private Structure maStruct
        Implements IComparable
        Dim s1 As String
        Dim s2 As String
        Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
            Dim struct As maStruct
 
            If obj.GetType IsNot GetType(maStruct) Then
                Throw New ArgumentException("Objet du mauvais type")
            Else
                struct = CType(obj, maStruct)
            End If
 
            If Me.s1 = struct.s1 AndAlso Me.s2 = struct.s2 Then
                'les structures sont identiques
                Return 0
            Else
                'les structures sont différentes
                Return 1
            End If
        End Function
    End Structure
comme vous pouvez le contater j'implémente l'interface IComparable afin de pouvoir comparer 2 structures.

par la suite dans mon code je fait ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
Dim dicoToDisplay As New SortedDictionary(Of maStruct, String)
...
Dim ca_pcStruct As New maStruct()
ca_pcStruct.s1 = "smth"
ca_pcStruct.s2 = "smwh"
...
dicoToDisplay.Add(ca_pcStruct, "...")
...
If Not dicoToDisplay.ContainsKey(ca_pcStruct) Then
...
'je passe ici 
else
...
'et parfois ici
end if
...
 
For Each ca_pc As maStruct In dicoToDisplay.Keys
   'et là ca croute quand je fait
   dicoToDisplay(ca_pcStruct)
 
   'et si je fait 
   dim b as boolean = dicoToDisplay.ContainsKey(ca_pc)
   'ca me retourne false
next
mes questions sont donc multiples. Est ce que j'oublie d'implémenté une interface dans ma structure avant de l interroger ?

Comme vous le voyer j'essai de faire correspondre un couple de données à ue valeur dans un dicionnary. J'utilise une structure mais n'existe t il pas un autre moyen pour faire ceci?

merci d'avance et à beintôt