Junior — Middle
Wie unterscheidet man einen Delegate vom Typ Predicate von einem Delegate vom Typ Func, und was sind ihre Hauptunterschiede?
sobes.tech KI
Antwort von AI
Der Hauptunterschied zwischen den Delegaten Predicate und Func in C# liegt in ihren Signaturen und Zwecken:
-
Predicate<T> — ist ein Delegat, der einen Parameter vom Typ T akzeptiert und einen bool zurückgibt. Wird verwendet, um eine Bedingung (Prädikat) an einem Objekt zu überprüfen.
-
Func<T, TResult> — ist ein generischer Delegat, der einen Parameter vom Typ T akzeptiert und einen Wert vom Typ TResult zurückgibt. Func ist vielseitiger, da TResult jeder Typ sein kann.
Wenn Func bool zurückgibt und einen Parameter akzeptiert, ist es funktional äquivalent zu Predicate.
Beispiel:
Predicate<int> isPositive = x => x > 0;
Func<int, bool> isPositiveFunc = x => x > 0;
bool result1 = isPositive(5); // true
bool result2 = isPositiveFunc(5); // true
Daher ist Predicate ein spezialisierter Delegat für Bedingungen, während Func ein universeller Delegat für Funktionen mit Rückgabewert ist.