by Fabien Lavocat
24. mars 2008 09:57
Prenons une classe quelconque avec une propriété :
public class MyClass
{
public String MyProperty { get; set; }
}
Nous allons maintenant voir une nouvelle façon de créer une instance de cette classe en définissant une valeur pour la propriété MyProperty.
MyClass variableA = new MyClass() { MyProperty = "Bonjour" };
MyClass variableB = new MyClass();
variableB.MyProperty = "Bonjour";
Vous remarquez le premier appel du constructeur avec l’assignation de la valeur à la propriété MyProperty est entre accolades.
Quelle est la différence entre ces deux méthodes ? Voyons ce que nous propose Reflector :
MyClass <>g__initLocal0 = new MyClass();
<>g__initLocal0.MyProperty = "Bonjour”;
MyClass variableA = <>g__initLocal0;
MyClass variableB = new MyClass();
variableB.MyProperty = "Bonjour";
Avec ce code, nous pouvons comprendre le mécanisme de création de la variable A. La CLR commence par créer une instance de la classe MyClass en temporaire dans la mémoire de l’ordinateur, ensuite elle affecte une valeur à la propriété MyProperty de la variable temporaire puis si aucune erreur n’est déclenchée, la variable variableA reçoit la référence de la variable temporaire.
Dans la seconde méthode, on créé simplement une nouvelle instance de la classe MyClass que l’on affecte à notre variable variableB puis on change la valeur de sa propriété MyProperty.
Mots clés Technorati :
Exemple de code,
C#