Aujourd'hui, pour la première fois, j'ai vu quelque chose de semblable :
private string m => string.Empty;
utiliser lambda pour initialiser une variable. Pourquoi procéder ainsi et quels en sont les avantages ?
Aujourd'hui, pour la première fois, j'ai vu quelque chose de semblable :
private string m => string.Empty;
utiliser lambda pour initialiser une variable. Pourquoi procéder ainsi et quels en sont les avantages ?
Ça s'appelle Expression - Propriétés du corps et c'est simplement un raccourci pour les propriétés de type getter-only :
private string m
{
get { return string.Empty; }
}
En ce qui concerne les avantages de cette approche, je suppose que vous pouvez la considérer comme un sucre syntaxique qui ne fait qu'économiser quelques frappes de clavier.
Voir Roslyn Wiki
Ce n'est pas une variable, c'est une propriété liée à une expression. Une propriété en lecture seule, dans votre cas, qui renvoie string.Empty
.
C'est la même chose que
private string m { get { return string.Empty; } }
C'est l'une des nouvelles fonctionnalités introduites dans C# 6.0. L'avantage est un code plus court et plus concis. Surtout si vous avez une classe avec beaucoup de propriétés simples en lecture seule.
Si vous souhaitez voir un exemple concret de cette syntaxe, consultez la page cet article sur le blog d'Eric Lippert . Comme vous pouvez le voir, il y a beaucoup de méthodes et de propriétés en une ligne. Sans les propriétés et membres à corps d'expression, le code serait beaucoup plus long. Et une partie considérable de celui-ci serait des accolades.
Il ne s'agit pas d'une initialisation de variable, mais de lier l'expression lambda "string.Empty" à "m", de sorte que chaque fois que vous déréférencerez "m", votre expression lambda sera évaluée.
Pour en savoir plus, consultez cette page github (section "Membre de la fonction d'expression")
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.