21 votes

Initialisation de variables lambda en C#

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 ?

18voto

haim770 Points 11507

Ç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

12voto

Jakub Lortz Points 10130

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.

5voto

Christian Kiewiet Points 633

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.com

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.

Powered by:

X