Ich bin verwirrt über den Umfang des Lambda-Variable, nehmen Sie zum Beispiel des folgendWelchen Umfang hat eine Lambda-Variable in C#?
var query =
from customer in clist
from order in olist
.Where(o => o.CustomerID == customer.CustomerID && o.OrderDate == // line 1
olist.Where(o1 => o1.CustomerID == customer.CustomerID) // line 2
.Max(o1 => o1.OrderDate) // line 3
)
select new {
customer.CustomerID,
customer.Name,
customer.Address,
order.Product,
order.OrderDate
};
In Zeile 1 Ich habe ein Lambda-Variable ‚o‘ erklären, das bedeutet, dass ich es nicht erklären kann wieder in Zeile 2 (oder zumindest beschwert sich der Compiler, wenn ich versuche) Aber es beschwert sich nicht über Zeile 3, obwohl 'o1' bereits existiert ??
Welchen Umfang hat eine Lambda-Variable?
Sie haben die Antwort unten, ich möchte nur einen einfachen, praktischen Hinweis teilen: Wenn der Umfang nicht klar aus dem Code zu lesen ist, und wenn der Umfang zählt, entweder die visuelle Ambiguität vermeiden, indem man verschiedene Variablennamen verwendet; oder schreiben Sie Ihre lambdas in langen form, mit geschweiften Klammern, so dass sie mehr wie Funktionen aussehen - der Verstand und das Auge der meisten Programmierer machen eine klarere Unterscheidung, wenn Sie die traditionellen geschweiften Klammern sehen. –