image

L’accès aux backing fields des propriétés au-implémentées

Dans la série des VB IsNot C#, je vous propose aujourd’hui une différence d’implémentation des propriétés auto-implémentées en C# et en VB.

C’est avec une légère surprise que je viens de redécouvrir qu’en VB, il est tout à fait possible d’accéder directement aux champs privés générés par le compilateur lors de la création d’une propriété auto-implémentée :

image

Par convention, le champ est préfixée via un underscore, il ainsi tout à fait possible d’y accéder.

Alors qu’en C#, le compilateur fait en sorte que l’on ne puisse pas directement y accéder.

A noter que ce champ privé n’apparait pas dans l’intellisense lorsque l’on essaye d’y accéder.

Par contre le Go To Definition proposé par Visual Studio highlight bien la propriété Lastname lorsqu’on l’applique au champ privé. Donc même si on ne voit pas la déclaration on peut deviner la provenance de ce champ.

ReSharper reste quand à lui un peu perdu et ne sait pas trop d’où vient ce champ.

En plus d’être un peu perturbant car on peut ne pas voir d’un coup d’œil d’où vient ce champ. Cela peut poser problème lorsque l’on souhaite déclarer un champ qui porte le même nom que celui généré par le compilateur :

image

Heureusement le compilateur propose un message bien plus compréhensible :

image

4 réflexions au sujet de « L’accès aux backing fields des propriétés au-implémentées »

  1. Aa

    J’avais lu un article à ce sujet y a quelques mois déjà, et la conclusion était : c’est bien beau, et ça peut éventuellement dépanner, maintenant faut bien gardé en tête que c’est pas du tout une bonne idée, car ce n’est pas supporté par MS (ce n’est pas dans les standards du langage, et donc par exemple Mono va l’implémenter différemment) et peut donc changer du jour au lendemain (sans même fait l’objet d’une annonce).

    Répondre
    1. Patrice Lamarche

      Bonjour Aa (?),
      Cette fonctionnalité est parfaitement documentée et fait parti des specifications du langage.
      Il ne s’agit en aucun cas d’une bidouille, et cela ne poura donc pas changer du jour au lendemain.

      Répondre
  2. Imane Elazlouk

    Bonjour Patrice,

    Je m’excuse d’avoir à vous contacter en commentant votre publication mais c’était le seul moyen de vous laisser un message.

     

    Nous
    sommes un éditeur de logiciels spécialisé dans la finance de marché.

    Nos
    développeurs travaillent avec du matériel de pointe sur des langages Java et
    C#, langage dont vous semblez être très intéressé.

    Nous
    utilisons les dernières versions de framework .NET et évoluons dans des
    domaines techniques tels que WinForm, DevExpress…

    Nos
    équipes produits sont organisées en méthode Scrum et sont réparties dans 3 de
    nos filiales : Paris, Hong Kong & Cluj.

     

    N’hésitez
    pas à me contacter pour plus de renseignements ou si vous souhaitez que nous
    échangions dans le cadre d’un entretien.

    Dans
    le cas où vous ne seriez pas intéressé, je vous remercie de bien vouloir en
    parler aux personnes de votre entourage qui seraient à la recherche d’une
    nouvelle opportunité et de leur transmettre mes coordonnées.

     

    Cordialement,

    Imane El Azlouk | HR
    Assistant | ULLINK | T: +33 1 49 95 10 25 |Switch: +33
    1 49 95 30 00 |

    | 23-25 rue de Provence | 75009 Paris | imane.elazlouk@ullink.com |

    Répondre
    1. Patrice Lamarche

      Pour les contacts, il y a pas mal d’icônes en haut de chaque page qui sont bien plus appropriées pour ce type de contact… (LinkedIn par exemple)

      Quoi qu’il en soit, je ne suis pas à l’écoute du marché pour le moment.

      Cordialement,

      Patrice Lamarche

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *