Was ist der Unterschied zwischen Func, Action und Predicate in C#? Wann verwendet man was?
Hallo Kollegen! Ich habe vor kurzem angefangen, C# zu lernen, und bin auf die eingebauten Delegaten Func, Action und Predicate gestoßen. Sie scheinen alle ähnlich zu sein – es sind irgendwelche generischen Delegaten, aber ich bin verwirrt, wann ich welchen verwenden soll.
Ich verstehe, dass sie alle es ermöglichen, Methoden als Parameter zu übergeben, aber ihre Signaturen sind unterschiedlich. Zum Beispiel habe ich solchen Code gesehen:
Func<int, int, int> add = (x, y) => x + y;
Action<string> print = s => Console.WriteLine(s);
Predicate<int> isEven = x => x % 2 == 0;
Anscheinend nehmen alle drei Argumente entgegen und tun etwas. Aber warum wird für die Überprüfung auf Geradheit Predicate verwendet und nicht Func<int, bool>? Und wozu braucht man überhaupt Action, wenn man stattdessen