Sobes.tech
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.