Junior — Middle
Ինչպես տարբերել Predicate տիպի դելեգատը Func տիպի դելեգատից, և ինչ են նրանց հիմնական տարբերությունները?
sobes.tech AI
Պատասխան AI-ից
C# լեզվում Predicate և Func դելեգատների հիմնական տարբերությունը նրանց ստորագրություններում և նպատակներում է:
-
Predicate<T> — դա դելեգատ է, որը ընդունում է T տիպի մեկ պարամետր և վերադարձնում է bool։ Օգտագործվում է օբյեկտի վրա պայման (պրեդիկատ) ստուգելու համար։
-
Func<T, TResult> — դա ընդհանուր դելեգատ է, որը ընդունում է T տիպի պարամետր և վերադարձնում է TResult տիպի արժեք։ Func-ը ավելի բազմակողմանի է, քանի որ TResult կարող է լինել ցանկացած տիպ։
Եթե Func վերադարձնում է bool և ընդունում է մեկ պարամետր, ապա ֆունկցիոնալապես հավասար է Predicate-ին։
Օրինակ՝
Predicate<int> isPositive = x => x > 0;
Func<int, bool> isPositiveFunc = x => x > 0;
bool result1 = isPositive(5); // true
bool result2 = isPositiveFunc(5); // true
Այսպիսով, Predicate-ը մասնագիտացված դելեգատ է պայմանների համար, իսկ Func-ը՝ համընդհանուր դելեգատ՝ ֆունկցիաների համար, որոնք ունեն վերադարձի արժեք։