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

ASP.NET Discussion :

get /set compléments


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut get /set compléments
    Bonjour, quelle est la différence entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           public class tag
            {
                public int IdNiveau;
                public string NomNiveau;
            }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           public class tag
            {
                public int IdNiveau {get; set;}
                public string NomNiveau  {get; set;}
            }
    par avance merci

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    D'un côté tu as une variable et de l'autre une propriété

  3. #3
    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
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    D'un côté tu as une variable et de l'autre une propriété
    Pour être exact, ça s'appelle un champ et non une variable

    Dans le 2e exemple de code, tu as des propriétés auto-implémentées. C'est comme si tu avais écris ceci :

    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
    17
    18
           public class tag
            {
     
                private int _idNiveau;
                private string _nomNiveau;
     
                public int IdNiveau
                {
                    get { return _idNiveau; }
                    set { _idNiveau = value; }
                }
     
                public string NomNiveau
                {
                    get { return _nomNiveau; }
                    set { _nomNiveau = value; }
                }
            }
    Une propriété est en fait une paire de méthodes (appellées "accesseurs") get et set, qui servent respectivement à obtenir ou modifier la valeur de la propriété. L'intérêt d'une propriété par rapport à un champ est que tu encapsules la valeur : aucun code extérieur à la classe ne peut modifier tes champs privés sans passer par du code que tu contrôles, ce qui permet d'ajouter si besoin du code de validation, de déclencher des notifications, etc...

    Il est d'ailleurs fortement déconseillé de déclarer des champs publics (sauf éventuellement en static readonly), car celà permet à du code externe de modifier l'état interne de ta classe sans que tu puisses le contrôler. Utilise plutôt des propriétés pour mieux respecter l'encapsulation

    EDIT: c'est dans la FAQ, j'aurais dû m'en douter...

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    tomlev, pas grave on est tous passé par là...
    en même temps si tout le monde lisait les docs, les FAQs, les howto, les tuto... ca se saurait... il n'y aurait pratiquement plus aucune question sur le forum

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Pour être exact, ça s'appelle un champ et non une variable
    Exact, je savais bien que ça sonné faux dans mon oreille, mais je trouvais pas le terme

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Sinon pour compléter la réponse déjà bien complète de tomlev, on peut ajouter:
    - on peut rendre une propriété virtual
    - on peut déclarer le setter private et garder le getter public

  7. #7
    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
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Sinon pour compléter la réponse déjà bien complète de tomlev, on peut ajouter:
    - on peut rendre une propriété virtual
    - on peut déclarer le setter private et garder le getter public
    et j'ajouterais encore : on peut déclarer une propriété dans une interface. Pas un champ...

Discussions similaires

  1. Problèmes sur Get Set d'une variable.
    Par Mattk dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/04/2007, 01h43
  2. get set modifier valeur
    Par jcaspar dans le forum Langage
    Réponses: 1
    Dernier message: 11/03/2007, 01h36
  3. fonction générique pour get set et change
    Par tretsois dans le forum C++
    Réponses: 9
    Dernier message: 18/02/2007, 18h28
  4. Réponses: 7
    Dernier message: 23/01/2007, 11h08
  5. [VB6]Property Get/Set avec groupe de contrôles
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/01/2006, 12h09

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