par , 03/02/2016 à 13h02 (447 Affichages)
var x = (var y=rnd(10);y*y);
Bizarre non ? C’est l’utilisation du point virgule qui fait tout ici. Il permet de chaîner des expressions, la valeur finale étant celle de la dernière.
Dans le code exemple cela attribuera à x la valeur du carré d’un nombre aléatoire (en supposant rnd() une fonction retournant un tel nombre).
L’intérêt ? Comme on le voit dans cet exemple il n’est pas toujours possible d’attribuer à une variable le résultat d’une suite d’opérations sans passer par un code intermédiaire. Ici effectuer le carré dans rnd() n’aurait pas la même signification, de même faire un rnd(10*rnd(10) effectuerait deux tirages au sort ce qui est très différent.
En chaînant les opérations par un point virgule on peut définir des valeurs complexes en faisant l’économie de plusieurs lignes de code “intermédiaire”.
Pas fantastique mais pouvant ajouter de la clarté au code.
Dans un même esprit :
var y = (int x = 3) * 3 ;
Ce code attribuera la valeur “9” à y en définissant “x” à 3…
C# 6 ajoutera comme Roslyn les littéraux binaires. Cela est parfois utile. On pourra donc écrire
var b = 0b0100; pour définir b à “100” binaire, soit 4 en décimal.
Comme le binaire ou l’hexadécimal sont généralement des valeurs qu’on peut découper en unités ayant un sens (par demi octet, octet, double, etc) il sera possible d’ajouter des soulignés pour séparer les groupes sans perdre le caractère numérique du littéral : int x = 0xFF_00_0A_A0 ; est plus lisible sans erreur que 0XFF000AA0;
On notera enfin que les méthodes statiques seront plus faciles à utiliser ce qui sera une vraie simplification. Prenons le code suivant :
var b = Math.Sin(Math.Sqrt(5));
Il sera plus agréable d’écrire (et plus facile à lire) :
1 2 3
| using System.Maths;
var b = Sin(Sqrt(5)); |