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 :

Données membre privées et get/set besoin de précisions!


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut Données membre privées et get/set besoin de précisions!
    salut,
    j'aurai besoin de précisions au sujet des get/set en C#.
    En général, j'utilise le réfactor pour qu'ils me les génèrent automatiquement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private Socket sockConnection;
     
            public Socket SockConnection
            {
                get { return sockConnection; }
                set { sockConnection = value; }
            }
    j'ai pu constaté avec stupeur qu'il n'y avait pas les mêmes valeurs dans
    sockConnection (sans majuscule)

    et dans

    SockConnection ( avec majuscules)


    Donc première question est-ce-que je rêve?
    Faut-il utiliser la donnée avec les majuscule c'est-à-dire, celle générée par refactor ou faut-il utilisée la donnée privée??

    Personnellement j'ai pu voir que les bonnes valeurs se trouvaient dans ma variable public SockConnection (avec majuscule)

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Le machin avec les get/set (le SockConnection avec majuscule comme tu dis) on appelle ça une propriété en .Net

    La propriété te permet d'accéder au champ de ta classe (le sockConnection sans majuscule comme tu dis). En gros ça revient à avoir des méthodes GetMonChamp et SetMonChamp, sauf qu'à l'écriture et à l'utilisation c'est plus naturel (avis perso évidemment).

    Donc ce que te renvoie la propriété n'est rien d'autre que ton champ, dans l'exemple donné en tout cas. Si les 2 ne correspondent pas c'est qu'il y a du LSD dans l'air.

    La vraie question maintenant c'est dans quelle circonstance tu as constaté une différence ?

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    lol ouais doit y avoir du lsd dans l'air , c'est ce que je me dis de plus en plus ...
    j'ai vu une différence en mode debug.

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par mnemonic78 Voir le message
    j'ai vu une différence en mode debug.
    Mais encore ? Si tu pouvais vérifier le phénomène que tu rencontres et si tu le constates de nouveau, apporter plus de précision que l'on puisse comprendre également ^^

    En tout cas la valeur du champ et ce que renvoie la propriété c'est la même chose. A moins de faire des choses particulières dans la propriété, mais là c'est un autre problème.

  5. #5
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Attention avec le débuggeur et ce genre de soucis:

    Si le get{...} effectue un traitement un poil plus évolué que return le_champs , le comportement peut être tout à fait normal.

    Je m'explique : le débuggeur, pour afficher ses valeurs se base sur le getter, si le getter effectue un traitement (genre lire dans la socket) alors les valeurs vont changer à chaque fois que tu va aller consulter la donnée pendant ton debug...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Je plussoie Hed62.

    Le comportement est connu comme source d'erreur (aka "Func-eval is evil", il y a toute une categorie dediée concernant ce phenomene sur le blog de Mike Stall).

    Un exemple du comportement en question est donné ici. En gros, le getter fait une lazy init sur une variable, et tu te retrouves avec une difference entre la variable à null et la propriété initialisée.

    Bref, faire attention avec le debugger qui est beaucoup plus intrusif qu'il n'y parait. =)

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/02/2006, 12h10
  2. [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
  3. Réponses: 3
    Dernier message: 24/04/2005, 14h19
  4. Réponses: 6
    Dernier message: 08/11/2004, 18h23

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