150 votes

Une fonction lambda en c# peut-elle avoir plus d'une ligne ?

Je ne parviens pas à le savoir en effectuant une recherche sur Google ou dans la documentation MSDN. Quelqu'un peut-il confirmer s'il prend en charge la syntaxe pour plus d'une ligne ?

221voto

RQDQ Points 8896

Bien sûr :

List<String> items = new List<string>();

var results = items.Where(i => 
       {
                bool result;

                if (i == "THIS")
                    result = true;
                else if (i == "THAT")
                    result = true;
                else
                    result = false;

                return result;
            }
        );

38voto

Jon Skeet Points 692016

(Je suppose que vous parlez vraiment de déclarations multiples plutôt que de lignes multiples).

Vous pouvez utiliser plusieurs instructions dans une expression lambda en utilisant des accolades, mais seule la syntaxe qui n'utilise pas d'accolades peut être convertie en un arbre d'expression :

// Valid
Func<int, int> a = x => x + 1;
Func<int, int> b = x => { return x + 1; };        
Expression<Func<int, int>> c = x => x + 1;

// Invalid
Expression<Func<int, int>> d = x => { return x + 1; };

29voto

SLaks Points 391154

Vous pouvez mettre autant de retours à la ligne que vous le souhaitez dans une expression lambda ; C# ignore les retours à la ligne.

Vous vouliez probablement demander à propos des multiples déclarations .

Les déclarations multiples peuvent être entourées d'accolades.

Voir le documentation .

6voto

Polity Points 7316
Func<string, bool> test = (name) => 
{
   if (name == "yes") return true;
   else return false;
}

3voto

jfs Points 13605

Je ne pense pas que vous ayez fait des recherches sur MSDN ou même que vous ayez googlé la question. Le premier résultat de google lié à MSDN pour "c# lamda" est Expressions lambda (Guide de programmation C#) qui dit

Le corps d'une déclaration lambda peut être composé d'un nombre quelconque d'instructions ; Cependant, en pratique, il n'y en a généralement pas plus de deux ou trois.

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