Sobes.tech
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-ը՝ համընդհանուր դելեգատ՝ ֆունկցիաների համար, որոնք ունեն վերադարձի արժեք։