Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    mai 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 63
    Points : 12
    Points
    12

    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 :
    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 :
    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 Benoît
    Inscrit en
    février 2003
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Benoît
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : février 2003
    Messages : 1 732
    Points : 2 594
    Points
    2 594

    Par défaut

    quand tu utiles des propriétés auto-implémentés :
    Code :
      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
    Candidat au titre de Membre du Club
    Inscrit en
    mai 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 63
    Points : 12
    Points
    12

    Par défaut

    Citation Envoyé par BenoitM Voir le message
    quand tu utiles des propriétés auto-implémentés :
    Code :
      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 :
    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 Benoît
    Inscrit en
    février 2003
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Benoît
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : février 2003
    Messages : 1 732
    Points : 2 594
    Points
    2 594

    Par défaut

    Code :
    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •