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

 .NET Discussion :

Probleme Get / Set [C#]


Sujet :

.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 63
    Points : 42
    Points
    42
    Par défaut Probleme Get / Set
    Bonjour à tous,

    Je débute en C# et j'ai un petit problème avec le get; set ;


    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 Email
    {
    private String from, fromName, to, subject, content, host, username, password, attachment;
        private bool bSsl;
        private int port;
     
        public String From { get; set; }
        public String FromName { get; set; }
        public String To { get; set; }
        public String Subject { get; set; }
        public String Content { get; set; }
        public String Host { get; set; }
        public String Username { get; set; }
        public String Password { get; set; }
        public String Attachment { get; set; }
        public bool BSsl { get; set; }
        public int Port{ get; set; }
    }
    Quand j'assigne une valeur a FromName cela devrais normalement mettre la valeur a fromName (sans majuscule et qui est en private) mais cela ne le fait pas. Quand je regarde le débuggeur c'est bien FromName a qui la valeur a étais assigner.

    Par contre si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public String FromName 
    { 
            get
            {
                return fromName;
            }
            set
            {
                fromName = value;
            }
    }
    Cela marche parfaitement.

    D'ou viens le probléme? Je ne vois pas bien l'intéret aussi de faire tous ca, mettre en public ne serais pas plus simple?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    quand tu utiles des propriétés auto-implémentés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      public String To { get; set; }
    il ne faut pas déclarer de variable, c'est le compilateur qui va gerer la variable interne.
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 63
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    quand tu utiles des propriétés auto-implémentés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      public String To { get; set; }
    il ne faut pas déclarer de variable, c'est le compilateur qui va gerer la variable interne.
    D'accord donc je vire tous les private, mais donc je ne comprends pas vraiment l'intérêt ( en tous cas maintenant cela marche ).

    Pourquoi utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public String To { get; set; }
    au lieu de :

    Les deux font exactement la même chose si je ne dis pas de bêtise.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public String To { get; set; }
    est une propriété,
    est un attribut.
    Les deux font la même chose mais la propriété respecte la norme qui veut qu'on ne donne pas accès aux champs directement mais via des Getter/Setter (propriété). Et il est plus facile d'adopter les bonnes pratique au début même si ca n'a pas d'"utilité" que de devoir changer un code où tu ne les a pas appliquer

    Même si en .Net on a l'avantage d'avoir des proriétés et que changer un attribut en propriété passe souvent inapercu, tu cours moins de risque en creer directement une propriété plutot qu'un champ et surtout dans les autres language tu devais revoir tout ton code pour adapter ton code


    Si demain on te dit que le To doit être une adresse valide (max X caractère, avoir un @ dans l'adresse , il est plus facile de modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public String To { get; set; }
    que l'autre version
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

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

Discussions similaires

  1. Probleme de GET SET.
    Par Naografix dans le forum C#
    Réponses: 0
    Dernier message: 23/03/2014, 20h17
  2. Probleme get set
    Par dalton5 dans le forum C++/CLI
    Réponses: 14
    Dernier message: 13/06/2007, 00h13
  3. Réponses: 7
    Dernier message: 23/01/2007, 12h08
  4. probleme Avec Set ?
    Par mehdi_swatch dans le forum Langage
    Réponses: 6
    Dernier message: 29/05/2006, 17h59
  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, 13h09

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