Junior
Kas ir delegāti C# un kam tie tiek izmanto?
sobes.tech AI
Atbilde no AI
C# delegāti ir tipa droši metožu norādītāji. Tie inkapsulē metodi, ļaujot to nodot kā parametru vai izmantot kā mainīgā tipu.
Tiek izmantoti:
- Novērotāja (Observer) parauga īstenošana: C# notikumus balsta delegāti. Izdevējs informē abonentus, izsaucot delegātu.
- Atpakaļzvani (Callbacks): Metodes nodošana kā funkcijas argumentu, kas to vēlāk izsauks.
- Vispārējā programmēšana:
ActionunFuncdelegāti ļauj izveidot vispārējas metodes, kas darbojas ar dažādām signatūrām. - ** Paralēla un asinhrona programmēšana:** Metodes, kas tiek izpildītas citās pavedienos vai asinhroni, bieži tiek nodotas caur delegātiem.
- LİNQ: LINQ operatori aktīvi izmanto delegātus, lai noteiktu filtra nosacījumus, pārveidojumus utt.
Delegāta deklarācija un izmantošanas piemērs:
// Deklarācija ar `void` signatūru un vienu `int` argumentu
public delegate void MyDelegate(int x);
public class MyClass
{
public void PrintNumber(int num)
{
Console.WriteLine($"Skaitlis: {num}");
}
public static void Main(string[] args)
{
// Delegāta izveide, norādot uz `PrintNumber` metodi
MyDelegate del = new MyDelegate(new MyClass().PrintNumber);
// Metodes izsaukšana caur delegātu
del(10);
}
}
Piemērs ar Action (void metodes):
using System;
public class OtherClass
{
public void ExecuteAction(Action action)
{
action(); // izpildām nodoto delegātu
}
public static void Main(string[] args)
{
Action myAction = () => Console.WriteLine("Sveiki no Action!");
new OtherClass().ExecuteAction(myAction);
}
}
Piemērs ar Func (metodes ar atgriežamo vērtību):
using System;
public class ThirdClass
{
public int Calculate(Func<int, int, int> operation, int a, int b)
{
return operation(a, b); // izpildām nodoto operāciju un atgriežam rezultātu
}
public static void Main(string[] args)
{
Func<int, int, int> add = (x, y) => x + y;
int result = new ThirdClass().Calculate(add, 5, 3);
Console.WriteLine($"Summa rezultāts: {result}");
}
}