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 :

C#3.0 Propriété auto-implémenté


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 76
    Points
    76
    Par défaut C#3.0 Propriété auto-implémenté
    Bonjour à tous,

    une des nouveautés de C# 3.0 est les propriétés auto-implémenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int MyProperty {get;set;}
    A la compilation, le compilateur crée des membres privés correspondant.

    Pourquoi ne pas utiliser un membre publique dans ce cas?

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Parce qu'à l'avenir, si tu veux faire des traitements particuliers dans le get / set; il faudrait que tu changes ton champ public en propriété publique, ce qui est un breaking change pour les utilisateurs de ta classe.

    cf ce thread : http://www.developpez.net/forums/sho...&highlight=set

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    tant qu'il n'y a pas de reflection ou autre truc dans le genre, changer une variable en propriété ne pose guère de problème à mon avis

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Pour des variables de type internal, oui, ça pose pas de problèmes, puisqu'il n'y a pas de lien d'une assembly externe vers la propriété / le champ en question (pour peu que personne n'est fait de hack douteux à base de réflexion pour choper des variables privées / protégées / internes).

    Quand tu codes une bibliothèque utilisée par d'autres projets / d'autres équipes, ça peut mettre le boxon. cf le thread dont j'ai mis en lien.

  5. #5
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Pour des variables de type internal, oui, ça pose pas de problèmes, puisqu'il n'y a pas de lien d'une assembly externe vers la propriété / le champ en question (pour peu que personne n'est fait de hack douteux à base de réflexion pour choper des variables privées / protégées / internes).

    Quand tu codes une bibliothèque utilisée par d'autres projets / d'autres équipes, ça peut mettre le boxon. cf le thread dont j'ai mis en lien.
    Même sans réflexion, ça fout la zone : un assembly qui utilise cette bibliothèque ne fonctionnera plus si le champ est transformé en propriété. Même s'il n'y a pas de code à changer, il faudra au moins recompiler : l'accès à une propriété, pour le CLR, est un appel de méthode, contrairement à l'accès à un champ. Ca ne génère pas les mêmes instructions MSIL

Discussions similaires

  1. [XL-2007] RowSource auto implémenté dans une ListBox et question subsidière
    Par PaulG2B dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/06/2011, 08h15
  2. Réponses: 2
    Dernier message: 27/04/2009, 11h39
  3. [CustomControls Library] Comment implémenter une propriété ToolTip commune ?
    Par neguib dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 31/10/2008, 08h23
  4. Auto Increment sur une propriété
    Par ElSkud dans le forum Hibernate
    Réponses: 2
    Dernier message: 29/06/2008, 18h14
  5. implémenter un numéro auto avec une valeur texte
    Par Stagiaireparc dans le forum Modélisation
    Réponses: 1
    Dernier message: 12/07/2007, 22h21

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