Wstęp:
Jak wiemy struktura pamięci komputera składa się z wielu segmentów, najważniejszymi z nich jest stos i sterta. Na stosie przechowujemy typy wartościowe np. zmienną typu int, natomiast jeśli zadeklarujemy instancje klasy trafi ona na stertę ponieważ tam przechowuje się wszystkie referencje do obiektów. Podobnie jest z delegatami które również są obiektami.
Definicja:
Delegat - jest to obiekt, które przechowuje referencje do funkcji lub metody wewnątrz danej klasy. Co bardzo ważne funkcja musi przyjmować te same argumenty i zwracać ten sam typ - tzw. zgodność sygnatury.
[modyfikator dostępu] delegate typ_zwracany nazwa_delegata [(lista_argumentów)];
Zastosowanie:
Delegaty znajdują najczęściej zastosowanie w zdarzeniach, które implementujemy za ich pomocą. Przykładowo aplikacje WinForm oraz WPF używają zdarzeń a tym samym delegatów.
Prosty przykład:
namespace ConsoleApplication3
class Pojazd
{
public delegate string Delegat();
private string model, marka;
public Pojazd(string model, string marka)
this.model = model;
public string WyswietlMarke()
return marka;
public string WyswietlModel()
return model;
}
class Program
{
static void Main(string[] args)
Pojazd audi = new Pojazd("Audi", "A4");
Pojazd.Delegat delegat_ = new Pojazd.Delegat(audi.WyswietlMarke);
Console.WriteLine(delegat_());
delegat_ += () =>
{
return "Uzycie Wyrazenia
Lambda";
};
Console.WriteLine(delegat_());
delegat_ += new Pojazd.Delegat(audi.WyswietlModel); // Możemy
przypisać więcej funkcji, wtedy wszyskie zostaną wywołane w kolejności
Console.WriteLine(delegat_());
Console.ReadLine();
}
}}