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

Windows Forms Discussion :

[C#] Objets et cache


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut [C#] Objets et cache
    Bonjour,

    Je mémorise un ArrayList ou un Hashtable remplit d'objets afin de le rappelé ultérieurement dans mon appli.
    Seulement j'aimerai savoir si il y a un moyen de comparer mon ArrayList (et son contenu) mémorisé et un nouvel ArrayList (avec d'autres données) simplement ?

    En gros je cherche à obtenir un ID unique pour chaque tableau afin de comparer si il y a une différence.

    J'ai pensé à sérialiser chaque arraylist pour obtenir un ID mais il y a surement un autre moyen ?

    Merci
    "Un peu d'huile, de la viande, du broco et j'obtiens un bon BoeufBrocoli !"

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    tonArrayList.GetHashCode() ca ne marche pas :

  3. #3
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    non ca ne marche pas....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Hashtable __test = new Hashtable();
    __test.Add("aze","aze");
    __test.Add("qsd","qsd");
     
    Hashtable __test2 = new Hashtable();
    __test2.Add("aze","aze");
    __test2.Add("qsd","qsd");
     
    int i1 = __test.GetHashCode();
    int i2 = __test2.GetHashCode();
    Au debug, j'ai obtenu i1 = 7 et i2 = 13
    J'ai le même contenu pour les deux...
    "Un peu d'huile, de la viande, du broco et j'obtiens un bon BoeufBrocoli !"

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut

    Citation Envoyé par BoeufBrocoli
    Au debug, j'ai obtenu i1 = 7 et i2 = 13
    J'ai le même contenu pour les deux...
    techniquement tu n'as pas le même contenu dans les deux . En effet tu enregistre 4 instances différentes de la classe string dans tes hashtables.

    C'est donc normal que tu n'ai pas la même chose.

    De plus le code de Hash est unique vu qu'il sert à enregistrer l'objet dans une table de hash à valeur unique.

    tu peux tenter le Equals de hashtable mais je ne sais pas comment il est implémenté. S'il se base sur les Equals du contenu ça va devrait passer sinon c'est foutu.
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Je n'ai malheureusement pas la possibilité encore de tester mais je te confie ceci en brut
    Implemente ton propre MyHastable dérivé de Hashtable
    qui possède une surcharge de la méthode Add qui permettrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public void Add(DictionaryEntry de)
    { base.Add(de.Key, de.Value);}
    Ainsi il est peut être possible que cela reussisse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    DictionaryEntry de1 = new DictionaryEntry("aze","aze");
    DictionaryEntry de2 = new DictionaryEntry("qsd","qsd");
     
    MyHastable test1 = new MyHastable(); 
    test1.Add(de1); 
    test1.Add(de2); 
     
    MyHastable test2 = new MyHastable(); 
    test2.Add(de1); 
    test2.Add(de2); 
     
    int i1 = test1.GetHashCode(); 
    int i2 = test2.GetHashCode();
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    Hélas ca ne marche pas.
    J'ai crée un MyHashtable.

    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
     
    DictionaryEntry de1 = new DictionaryEntry("aze","aze");
    DictionaryEntry de2 = new DictionaryEntry("qsd","qsd");
     
    MyHashtable __test = new MyHashtable();
    __test.Add(de1);
    __test.Add(de2);
     
    MyHashtable __test2 = new MyHashtable();
    __test2.Add(de1);
    __test2.Add(de2);
     
    int i1 = __test.GetHashCode();
    int i2 = __test2.GetHashCode();
     
    bool i3 = __test.Equals(__test2);
    i1 = i2 sont différents... et i3 me renvoi false.

    Je pense que je vais implémenter une méthode CompareTo()...

    Merci pour vos réponses !
    "Un peu d'huile, de la viande, du broco et j'obtiens un bon BoeufBrocoli !"

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Utilises alors le MyHashtable tu auras accès ainsi à la propriété protégée
    Propriété Hashtable.comparer
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. Transfert d'un objet du Cache Internet Explorer
    Par Droïde Système7 dans le forum Web & réseau
    Réponses: 15
    Dernier message: 23/08/2011, 18h07
  2. Objet en cache - persitence et optimisation
    Par snopims dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/10/2009, 11h24
  3. Objet en cache qui disparait
    Par Hokutomarsouin dans le forum ASP.NET
    Réponses: 1
    Dernier message: 01/06/2007, 09h51
  4. [c#][debutant] manipuler objets du cache de ie
    Par orelero dans le forum Windows Forms
    Réponses: 9
    Dernier message: 11/12/2005, 21h36
  5. Comment modifier l'affichage des objets cachés de Windows ?
    Par maximdus dans le forum API, COM et SDKs
    Réponses: 23
    Dernier message: 23/07/2005, 11h45

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