Avatar ·

Warum sollte man Expression<Func<T>> anstelle von Func<T> in C# verwenden? Erklären Sie anhand von Beispielen

Hallo zusammen! Ich habe angefangen, C# zu lernen, und bin auf diese Konstruktion gestoßen: `Expression>`. Es ist klar, dass `Func` einfach ein Delegate ist, das aufgerufen werden kann. Aber warum sollte man es in `Expression<>` einwickeln? Man könnte doch einfach ein Lambda als `Func` übergeben und es bei Bedarf aufrufen. Zum Beispiel habe ich in Entity Framework gesehen, dass in Methoden wie `.Where()` oft `Expression>` verwendet wird. Aber wenn ich `.Where(x => x.Age > 18)` schreibe, setzt der Compiler automatisch den richtigen Typ ein. Warum sollte ich explizit `Expression<>` angeben? Ich habe diesen Code: ```csharp Func square = x => x * x; Console.WriteLine(square(5)); // 25 ``` Und diesen: ```csharp Expression> squareExpr = x => x * x; // Wie verwendet man das? Einfach aufrufen kann man es nicht. ``` Ich verstehe, dass `Expression<>` ein "Ausdrucksbaum" ist, aber ich kann den praktischen Unterschied nicht erfassen. Wann muss ich `Expression>` verwenden, und wann reicht `Func`? Und warum wird in manchen Bibliotheken...