IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[VB.NET][Fwrk 2.0] Clé de type Structure dans un SortedDictionnary prbm comparaison


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut [VB.NET][Fwrk 2.0] Clé de type Structure dans un SortedDictionnary prbm comparaison
    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

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    Complément d'information, j'ai mis un point d'arrêt dans ma fonction CompareTo() de ma structure.
    Il semblerait qu'il parcourt le contenu du dictionnaire lorsque je lui demande un ContainsKey() mais il ne compare pas toutes les valeurs du dictionnaire

    typiquement il ne compare jamais la clé recherchée avec la première clé sauf si le dictionnaire ne contient qu'une seule clé !

    serait ce une possible erreure du Framework ? ca m'étonnerait quand même...

    si quelqu'un a une brillante idée je suis preneur

    merci d'avance
    je met à jour le post dès que j'ai plus d'infos...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    Bon finalement j'ai fait autrement pour réaliser mon traitement :

    plutot que d'utiliser une structure comme clé j'ai concaténer les 2 chaines pour en faire une clé unique... voilà conternement acceptable mais j'aurai quand même aimait avoir quelques réponses.. tant pis

    prochaine fois...
    @+ merci qd même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET][ADO.NET] : Taille d'un champs de type texte ?
    Par kleomas dans le forum Contribuez
    Réponses: 5
    Dernier message: 07/01/2007, 16h07
  2. Réponses: 2
    Dernier message: 16/05/2006, 09h52
  3. Réponses: 5
    Dernier message: 10/05/2006, 15h47
  4. [VB.NET] Direction à choisir pour réaliser ce type de Form?
    Par jazz matazz dans le forum Windows Forms
    Réponses: 14
    Dernier message: 21/04/2006, 03h54
  5. Renvoyer un type structuré dans objet OLE
    Par Bleuarff dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/05/2005, 20h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo