Junior
Ի՞նչ է դելեգատը C#-ում։
sobes.tech AI
Պատասխան AI-ից
Դելեգատը հղումային տիպ է, որը հայտարարում է delegate բանալի բառով: Այն ինկապսուլացնում է մեթոդը որոշակի սիգնատուրայով (վերադարձվող տիպը և պարամետրերի տիպերը): Իրականում, դելեգատը տիպային անվտանգ ցուցիչ է մեթոդի վրա:
Դելեգատների հիմնական հատկությունները:
- Մեթոդների ինկապսուլացում: Դելեգատը պահում է տեղեկություններ այն մեթոդի մասին, որի վրա նա հղում է:
- Տիպային անվտանգություն: Դելեգատը կարող է հղում կատարել միայն այն մեթոդներին, որոնց սիգնատուրան խիստ համապատասխանում է դելեգատի սիգնատուրային:
- Մուլտիկասթ (Multicast): Դելեգատները կարող են միաժամանակ հղում կատարել մի քանի մեթոդների: Դելեգատի կանչի ժամանակ, բոլոր կապված մեթոդները կանչվում են ըստ նրանց ավելացման կարգի:
Օրինակ հայտարարում և օգտագործում:
// Դելեգատի հայտարարում
public delegate int MyDelegate(int x, int y);
// Մեթոդ, որը համապատասխանում է դելեգատի սիգնատուրային
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
// Դելեգատի օգտագործում
public class Program
{
public static void Main(string[] args)
{
Calculator calc = new Calculator();
// Դելեգատի օրինակ ստեղծում և կապում Add մեթոդի հետ
MyDelegate del = new MyDelegate(calc.Add);
// Մեթոդի կանչում դելեգատի միջոցով
int result = del(5, 3);
System.Console.WriteLine(result); // Արտածում՝ 8
}
}
.NET Framework 3.5 և LINQ-ի հայտնվելու հետ, լայնորեն տարածվեցին բեռնված գեներիկ դելեգատները՝
Action<T1, ..., Tn>: Դելեգատ, որը չի վերադարձնում արժեք (void): կարող է ընդունել 0-ից 16 տարբեր տիպերի պարամետրեր:Func<T1, ..., Tn, TResult>: Դելեգատ, որը վերադարձնում էTResultտիպի արժեք: կարող է ընդունել 0-ից 16 տարբեր տիպերի պարամետրեր:Predicate<T>: Դելեգատ, որը ընդունում էTտիպի մեկ պարամետր և վերադարձնում է բուլյան արժեք: օգտագործվում է պայմանների ստուգման համար:
Տեղական դելեգատների համեմատական աղյուսակը:
| Դելեգատ | Վերադարձվող արժեք | Պարամետրեր | Օրինակ օգտագործում |
|---|---|---|---|
Action |
void |
0..16 պարամետրեր | Գործողության կատարմամբ առանց վերադարձի արժեքի |
Func<TResult> |
TResult |
0 պարամետր + վերադարձ TResult |
Հաշվարկ առանց մուտքային տվյալների |
Func<T, TResult> |
TResult |
1 պարամետր T տիպի + վերադարձ TResult |
Տվյալների փոխակերպում |
Predicate<T> |
bool |
1 պարամետր T տիպի |
Պայմանների ստուգում |
Դելեգատները լայնորեն օգտագործվում են իրադարձությունների մշակման, ասինխրոն գործառույթների, LINQ-ի և բլեքբեքների իրականացման համար։