Précédent   Forum du club des développeurs et IT Pro > Dotnet > Général Dotnet > Débuter
Débuter Forum d'entraide pour bien débuter avec Dotnet
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/10/2012, 12h42   #1
jerem3000
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 63
Points : 13
Points : 13
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?
jerem3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2012, 13h12   #2
BenoitM
Expert Confirmé
 
Homme Benoît
Inscription : février 2003
Messages : 1 658
Détails du profil
Informations personnelles :
Nom : Homme Benoît
Âge : 32
Localisation : Belgique

Informations forums :
Inscription : février 2003
Messages : 1 658
Points : 2 783
Points : 2 783
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
BenoitM est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/10/2012, 13h26   #3
jerem3000
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 63
Points : 13
Points : 13
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.
jerem3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2012, 13h51   #4
BenoitM
Expert Confirmé
 
Homme Benoît
Inscription : février 2003
Messages : 1 658
Détails du profil
Informations personnelles :
Nom : Homme Benoît
Âge : 32
Localisation : Belgique

Informations forums :
Inscription : février 2003
Messages : 1 658
Points : 2 783
Points : 2 783
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
BenoitM est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h52.


 
 
 
 
Partenaires

Hébergement Web