expresiones - ¿Puede una expresión C#lambda tener más de una declaración?
func c# lambda (5)
(Estoy asumiendo que realmente estás hablando de múltiples declaraciones en lugar de múltiples líneas).
Puede usar varias instrucciones en una expresión lambda utilizando llaves, pero solo la sintaxis que no usa llaves se puede convertir en un árbol de expresiones:
// 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; };
¿Puede una expresión C # lambda incluir más de una declaración?
(Editar: Como se hace referencia en varias de las respuestas a continuación, esta pregunta originalmente se hizo sobre "líneas" en lugar de "declaraciones").
De Lambda Expressions (Guía de programación C #) :
El cuerpo de un enunciado lambda puede consistir en cualquier cantidad de enunciados; sin embargo, en la práctica no suelen ser más de dos o tres.
Por supuesto:
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;
}
);
Puede poner tantas líneas nuevas como desee en una expresión lambda; C # ignora las nuevas líneas.
Probablemente quisiste preguntar sobre múltiples declaraciones .
Las declaraciones múltiples se pueden envolver entre llaves.
Ver la documentation .
Func<string, bool> test = (name) =>
{
if (name == "yes") return true;
else return false;
}