Exemple de code : Propriétés automatiques (C# 3.5)

by Fabien Lavocat 23. March 2008 02:01

 

clip_image001En C#2.0, comment faisions-nous pour créer des attributs avec leurs propriétés associées ?

private String _myProperty;
 
public String MyProperty 
{ 
    get { return this._myProperty; } 
    set { this._myProperty = value; } 
}

Et voilà ce que le logiciel Reflector traduit à partir du code IL généré à la compilation :

private string _myProperty;
 
public string MyProperty 
{ 
    get 
      { 
        return this._myProperty; 
      } 
    set 
      { 
        this._myProperty = value; 
      } 
}

Vous remarquez que ce sont exactement les même lignes.
Nous allons maintenant utiliser la simplification d’écriture de C#3.5 :

public String MyProperty 
{ 
    get; 
    set; 
}

Il n’est désormais plus nécessaire de créer l’attribut privé ainsi que le contenu des méthodes get et set de la propriété.
Voilà ce que Reflector nous génére à partir du code IL :

public string MyProperty 
{ 
    [CompilerGenerated] 
    get 
      {
        return this.<myproperty>k__backingfield;
      }
    [CompilerGenerated]
    set 
      {
        this.<myproperty>k__BackingField = value;
      }
}

L’attribut [CompilerGenerated] qui est rajouté par le compilateur indique que c’est lui-même (le compilateur) qui as créé le contenu de la méthode. <myproperty>k__backingfield permet à la CLR de récupérer ou modifier la valeur auquel fait référence la propriété étant donné que tout à été généré par le compilateur.

Si vous ne connaissez pas Reflector, je vous conseille de jeter un coup d’oeil sur ce logiciel : http://www.aisto.com/roeder/dotnet/

 

Tags: ,

Exemples de code

Comments

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading



About

Fabien Lavocat

Lavocat Fabien
Ingénieur Multimédia - TMM Communication



"Blog-Microsoft.fr is an independent blog and is not affiliated with, nor has it been authorized, sponsored, or otherwise approved by Microsoft Corporation."

Contactez-moi Send mail

MVP
Microsoft Most Valuable Professional
Client Application Development