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 :

Faq : Propriétés et retour de collection


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut Faq : Propriétés et retour de collection
    Citation Envoyé par FAQ C#
    Une propriété est une façon d'accéder à une variable de manière simple en lecture et/ou écriture Elles sont utilisées dans les cas où l'accès est fait sans traitement "lourd". D'après les bonnes pratiques de Microsoft, elles ne doivent pas renvoyer de collection ( par exemple : string[] )
    Je lis ceci dans la faq et je trouve que ça manque d'explications
    Au risque de paraître bête je pose donc la question : pourquoi est-ce une pratique à éviter ? Parle-t-on d'une collection au sens français du terme, ou bien d'une Collection au sens CSharp ?
    Si la raison est d'éviter la copie de tableaux entiers, comme c'est le cas pour string[], une Collection étant un simple wrapper, il ne devrait pas y avoir de recopie des éléments ?
    De plus On a l'impression que seules les propriétés sont concernées par cela, et les méthodes ?
    Il n'y a même pas un lien ou une citation pour aller voir ce qu'en dit Microsoft.


  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    C'est peut être au niveau "performance" que cela peut être gênant. Avec une propriété on ne se doute pas qu'il peut y avoir un traitement de copie derrière par exemple (si on ne doit pas pouvoir modifier la collection directement depuis l'extérieur), puisqu'une propriété ne doit normalement pas effectuer de traitement "lourd". Avec une méthode c'est autre chose par contre.

    Si on prend l'exemple suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int i = 0; i < monObjet.MonTableau.Length ; i++)
    {
        if (monObjet.MonTableau[i] == ...)
        {
        }
    }
    On effectue beaucoup d'appel à la propriété et éventuellement autant de copie à ce moment, sans le savoir. Niveau performance on a vu mieux ^^

    Avec une méthode on aurait codé ainsi par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int[] tab = monObjet.GetMonTableau();
    for (int i = 0; i < tab.Length ; i++)
    {
        if (tab[i] == ...)
        {
        }
    }
    Et pas de soucis.

    On peut faire pareil avec les propriétés qu'avec les méthodes, mais on a tendance à coder naturellement en utilisant les propriétés directement, puisqu'il ne devrait pas y avoir de traitement "lourd" derrière.

    J'ai un peu la tête dans le pâté ce soir, j'espère avoir été à peu près clair quand même

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Si si ça se tient, merci.

    Ce serait donc "psycologique" : on manipule une propriétée tout en sachant que l'accès sera rapide.

    Si queulqu'un trouve le papier de Microsoft je suis quand même preneur.

  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
    Par défaut
    Salut.

    C'est pour deux raisons principales :
    - Les perfs : Si jamais la propriété renvoi un tableau qui reconstitué à la volée, à chaque itération on recrée le tableau.

    - L'intégrité des données : Dans le cas d'un for par exemple, si le tableau est reconstitué à la volée il se peux qu'entre 2 itérations le contenu ne soit plus le même. Et à partir de ce moment personne ne peux prédire ce qui va se passer.

    Le lien vers le site de MS : http://msdn.microsoft.com/en-us/libr...1d(VS.71).aspx

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

Discussions similaires

  1. [SP-2007] Propriétées d'un site collection
    Par abrmed dans le forum SharePoint
    Réponses: 4
    Dernier message: 16/05/2011, 19h41
  2. Retour de collection depuis une Form
    Par Raziulus dans le forum C#
    Réponses: 2
    Dernier message: 09/03/2011, 16h00
  3. [WPF] Grouper par propriété d'une sous-collection
    Par BruceWayne dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 14/06/2007, 16h37
  4. Réponses: 4
    Dernier message: 22/12/2005, 11h43

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