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 :

[2.0] Réinitlisatiser un objet Dictionary


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut [2.0] Réinitlisatiser un objet Dictionary
    Salut,

    Je souhaite insérer un objet Dictionary en valeur d'un autre Dictionary. En soi, il n'y a pas de problème à l'insertion et à la lecture des objets eux-mêmes. Mon problème vient des clés uniques. Je souhaite insérer des Dictionary ayant des clés communes.

    Voici l'illustration de ce que je souhaite faire :
    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
    Public Function retournerDico() As Dictionary(Of String, Object)
    	Dim retour As Dictionary(Of String, Object) = New Dictionary(Of String, Object)
    	Dim dicoInterne As Dictionary(Of String, String) = New Dictionary(Of String, String)
     
    	For i As Integer = 0 To 10
    		If i Mod 2 = 0 Then
    			retour.Add(CType(i, String), "coucou")
    		Else
    			dicoInterne.Add("test", "coucou")
    			retour.Add(CType(i, String), destinataire)
    			'dicoInterne.Clear()
    		End If
    	Next
    	Return retour
    End Function
    Si je laisse ou j'enlève dicoInterne.Clear(), j'obtiens deux cas de figure :
    - soit je boucle sans rien faire et j'ai un message d'erreur concernant les clés
    - soit j'utilise la méthode clear() ce qui nettoie tous les Dictionary que je souhaite insérer et je n'obtiens en retour que des valeurs de clés paires.

    Je suis sûr que c'est très simple, mais je ne trouve pas la solution. La voyez-vous?

    Merci d'avance.

  2. #2
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Ne réussissant pas à utiliser clear() comme je l'imagine, j'essaie de supprimer toutes les paires clés/valeurs du Dictionary. Seulement, ceci ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cle As String In dicoInterne.Keys
    	dicoInterne.Remove(cle)
    Next
    L'opération d'énumération ne peux pas se faire puisque je change la collection.

    Comment puis-je donc supprimer toutes les clés/valeurs d'un Dictionary? C'est en fait la même question qu'avant, mais je n'avance pas malgré mes différentes tentatives.

  3. #3
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Bon j'ai trouvé une réponse à mon problème :
    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
    Public Function retournerDico() As Dictionary(Of String, Object)
    	Dim retour As Dictionary(Of String, Object) = New Dictionary(Of String, Object)
    	Dim dicoInterne As Dictionary(Of String, String) = New Dictionary(Of String, String)
     
    	For i As Integer = 0 To 10
    		If i Mod 2 = 0 Then
    			retour.Add(CType(i, String), "coucou")
    		Else
    			dicoInterne.Add("test", "coucou")
    			retour.Add(CType(i, String), destinataire)
    			dicoInterne = new Dictionary(Of String, String)
    		End If
    	Next
    	Return retour
    End Function
    Une question me vient tout de même à l'esprit. N'étant pas un pro de la programmation orientée objet, est-ce que le fait d'instancier un nouvel objet à chaque fois est une façon propre de faire?

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

Discussions similaires

  1. lire un objet Dictionary<Int32, List<String>>
    Par anthony.cortez dans le forum C#
    Réponses: 2
    Dernier message: 29/09/2014, 09h41
  2. Réponses: 5
    Dernier message: 29/09/2008, 16h55
  3. Sérialiser un objet héritant de Dictionary
    Par NicolasJolet dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/05/2008, 00h38
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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