6

Est-il sûr de le faire en C#?Affectation multiple (champ = Propriété = valeur)

field = Property = value; 

est-il garanti que le setter et getter être appelés successivement et seront field être attribués que le résultat du getter et pas nécessairement value? Le compilateur l'optimisera-t-il à value?

+0

Le getter sur 'Property' ne sera pas appelé dans ce cas. Si vous avez besoin de l'exécuter via le getter, vous devez séparer l'affectation: 'Property = value; field = Propriété; ' –

+0

http://stackoverflow.com/questions/13714246/assignment-and-sequence-points-how-is-this-ambiguous – Azodious

Répondre

4

En utilisant

private int tada; 
    public int TADA 
    { 
     get 
     { 
      Console.WriteLine("GETTER"); 
      return tada; 
     } 
     set 
     { 
      Console.WriteLine("SETTER"); 
      tada = value; 
     } 
    } 

et

 int s = TADA = 1; 

Je ne reçois que SETTER écrit à la fenêtre de sortie, il ne semble pas appeler le getter.

De C# Language Fundamentals

Vous pouvez même attribuer la même valeur à plusieurs variables, comme ceci:

int a, b, c, d;

a = b = c = d = 5;

Dans ce cas, a, b, c et d auront tous la valeur 5. Cela fonctionne parce que le compilateur C# effectue l'affectation la plus à droite en premier; est, d = 5. Cette affectation renvoie elle-même une valeur, la valeur 5. Le compilateur affecte ensuite cette valeur renvoyée à c. Cette deuxième affectation renvoie également une valeur, et ainsi de suite, jusqu'à ce que toutes les variables aient été affectées .

Questions connexes