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

C# Discussion :

[collection] comportement en agrandissement


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut [collection] comportement en agrandissement
    hello,

    J'ai besoin de passer une collection à une fonction (en l'occurence un HashSet), qui doit lire dedant et dans certain cas agrandir la collection.

    Mais j aimerais mettre en place un système qui empeche l'effacement ou le retraint d'un meembre de la collection.
    des idées ?

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Heu ... C'est toi qui code le HashSet ? Parce que dans un tel cas il te suffirait de ne pas faire d'ajout ou de retrait !!!

    Après si ce n'est pas toi et que la fonction en fait tu as deux cas :

    Soit tu veux conserver ta collection dans l'état où elle est et tu utilises le hashset pour avoir des info, dans ce cas, tu peux cloner ta collection, et passer le clone à la méthode.

    Soit tu as absolument besoin de passer ta collection originale et la méthode provoque des modifs que tu ne veux pas avoir, bah dans ce cas là, tu es embêté.
    Je ne sais pas s'il est possible de désactivé l'ajout, la modif, et le retrait temporairement, mais si c'est possible, il est probable que le HashSet génére une exception en tentant de le modifier.
    Après une solution, est de faire un clone de la collection, de passer l'originale à la méthode, et après de vérifier les mdifs sur l'original en la comparant au clone, et de faire les modifications inverse.

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Citation Envoyé par ZaaN Voir le message
    h
    Mais j aimerais mettre en place un système qui empeche l'effacement ou le retraint d'un meembre de la collection.
    des idées ?
    cf. l'objet ReadOnlyCollection<T>.

    Très pratique quand on veut retourner une collection à une classe cliente et qu'on veut s'assurer de l'impossibilité de modifier la collection sous jacente.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Connaissais pas.
    Pas d'exception levée lorsque la méthode tente de modifier la collection ?

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Connaissais pas.
    Pas d'exception levée lorsque la méthode tente de modifier la collection ?
    Ben, non, car pas de méthodes de modification

    C'est très pratique pour les propriétés publiques; tu peux l'utiliser ainsi par exemple :

    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
     
    class Portnawak
    {
       private List<string> _myNames = new List<string>();
     
       // .... chargement de la list qq part dans la classe
     
       // Propriété publique en lecture seulement
       public ReadOnlyCollection<string> MyNames
       {
            get
            {
                 return _myNames.AsReadOnly();
            }
       }
    }

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Ha c'est une méthode de Object ?
    C'est comme cela qu'il gere cela.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Ha c'est une méthode de Object ?
    Gnnnn

    kikidi ?


    C'est comme cela qu'il gere cela.
    J'ai pas trop suivi là.
    Je montrais ce que je pense être la façon correcte d'exposer les collections dans des propriétés publiques, mais là je ne comprends pas bien de quoi tu me parles ?

  8. #8
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Ce n'est pas une méthode de object, mais de List. A noter quand même que la ReadonlyCollection<T> est une IList<T>, et donc une ICollection<T>, et donc qu'un instance de ReadOnlyCollection<T> doit forcément avoir une fonction Add, qui est cachée par le framework (implémentation explicite, peut être ?), mais est accessible si on force le cast en ICollection<T>. Ca doit balancer une exception, par contre.
    C'est un sujet infini, ça, l'immuabilité des conteneurs ou la simulation de cette immuabilité

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

Discussions similaires

  1. [VB6] Sauvegarder une collection d'objets
    Par Sayagh dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/09/2003, 11h58
  2. [VB6] la collection controls
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/04/2003, 17h03
  3. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  4. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49
  5. Réponses: 2
    Dernier message: 08/10/2002, 18h26

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