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 :

[débutant]utilisation des propriétés


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut [débutant]utilisation des propriétés
    Salut,
    je commence le c# et j'aimerais vous posez une question .
    parmi les 2 bout de code suivant quel est le code le plus correct ?
    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 test
    {
    String nbreChoix;
       public string NBRECHOIX
            {
                get
                {
                    return nbreChoix;
                }
                set
                {
                    nbreChoix = value;
                }
            }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class test
    {
       public string nbreChoix
            { get; set }
    }
    Merci d'avance.

  2. #2
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    La seconde version ne fonctionne qu'en C# 3 (Framework 3.5).
    Seule la première version est compatible avec le Framework 2.0

  3. #3
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Si tu passes l'outil d'analyse de code StyleCop, il te fera faire plusieurs modifications :
    - Le nom de ta classe doit commencer par une majuscule
    - Ajouter explicitement le modificateur de portée sur ton champ (donc private)
    - préfixer les accès à ton champ privé par this. pour spécifier que tu accèdes au champ d'une instance. Ca va en gros ressembler à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Test
    {
        private string champ1;
     
        public string Champ1
        {
              get { return this.champ1; }
              set { this.champ1 = value; }
        }
    }

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Il me semble que c'est plutôt Framework 3.0 pas 3.5
    bref à partir du Frmwrk 3.0 les deux codes font la même chose. Quand le compilateur vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public string nbreChoix
            { get; set }
    il écrit ça dans le programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    string backingFieldBidule = "";
     
    public string nbrChoix
     {
      get {return backingFieldBidule;}
      set{backingFieldBidule = value;}
     }
    D'où le résultat ...

  5. #5
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Autre remarque, un champ qui s'intitule nbrechoix suppose qu'on va y stocker une valeur numérique (le nombre de choix). Or tu l'as déclaré de type string, ce n'est donc pas cohérent.
    Je te conseillerai donc d'utiliser le type int pour stocker des entiers, ou float pour des décimaux.

  6. #6
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par smyley Voir le message
    Il me semble que c'est plutôt Framework 3.0 pas 3.5
    Framework 3.5 / C# 3.0

    ++ pour la remarque de goldbug.

    Apres, pour les membres prives, tu as plusieurs conventions, entre les minuscules prefixees par this, les prefixes m_ et les prefixes _, c'est une guerre de religion qui dure depuis un bon moment

    (personnelement, je suis dans le camp des _, mais chacun son truc )

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Et puis non, c'est moi qui ai presque raison. En fait avec VS 2008 on peut utiliser ce genre de facilités même avec un projet en .NET 2.0 car c'est une fonctionnalité du compilateur (qui génère lui même ce qu'il faut), pas une fonctionnalité de la plateforme d'exécution (le CLR).
    Donc voilà, ça a beau être du C# 3.0 on peut l'utiliser sur un projet en .NET 2.0 (pourvu d'utiliser le bon compilateur).

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Pour répondre à la question initiale : les 2 écritures sont grosso-modo équivalentes. En fait, la 2e est pratique si tu n'as rien de particulier à faire dans le get et le set. Si, par exemple, tu as besoin d'implémenter un lazy loading dans le get, ou le déclenchement d'un évènement dans le set, tu es obligé d'utiliser la 1e écriture.

  9. #9
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par pvialatte Voir le message
    (personnelement, je suis dans le camp des _, mais chacun son truc )
    Ben moi aussi je l'étais... jusqu'à ce qu'on décide dans ma boîte de passer StyleCop sur tous nos sources

  10. #10
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    eheh, nous aussi, on es passe a stylecop...mais la regle a vite ete remplacee pour s'adapter a notre style

  11. #11
    En attente de confirmation mail
    Inscrit en
    Août 2007
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 174
    Points : 133
    Points
    133
    Par défaut
    La 2ème ne marchera pas, il manque le ; après le set

    Pour la 1ère, même remarque que Gold Bug, mais dans l'absolu les 2 doivent marcher de manière identique.

Discussions similaires

  1. [+ou- débutant] utilisation des sémaphores
    Par Biosox dans le forum Windows
    Réponses: 4
    Dernier message: 26/05/2008, 12h23
  2. Réponses: 3
    Dernier message: 02/07/2007, 17h32
  3. [débutant] Utilisation des tags "html:link", etc.
    Par ghohm dans le forum Struts 1
    Réponses: 6
    Dernier message: 30/05/2007, 17h58
  4. Débutant [Utilisation des effets sonores]
    Par QuestionMan dans le forum Multimédia
    Réponses: 1
    Dernier message: 06/03/2007, 10h52
  5. [Débutant]Utilisation des Threads
    Par maniolo dans le forum Débuter avec Java
    Réponses: 19
    Dernier message: 10/07/2006, 11h31

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