Witam.
Czy kolejnosc w jakiej wykonaja sie metody dodane do delegata zalezy od kolejnosci w jakiej zostały one dodane?
nie masz czasem na mysli zdarzeń ?
jesli tak to raczej w kolejnosci dodania
Tak jak kolega napisał - w kolejności dodania (zresztą, chyba łatwo to sprawdzić).
.. i mówisz o zdarzeniach - delegaty to co innego.
Deti napisał(a)
.. i mówisz o zdarzeniach - delegaty to co innego.
No ale mam np cos takiego, to sa delegaty, a nie zdarzenia i moge do delegaty wrzucic kilka metod:
delegate void MojDelegat();
public MojDelegat dlg;
public void Metoda1()
{
...
//Rób cos
}
public void Metoda2()
{
...
//Rób cos
}
public void Wywolaj()
{
this.dlg += this.Metoda1;
this.dlg += this.Metoda2;
this.dlg();//wywołanie delegaty, wywoła powyzsze metody
}
public event MojDelegat dlg;
Delegat to tylko wskaźnik na metodę, dlatego deklaruje mu się sygnaturę pasujących metod (lista parametrów, typ zwracany).
A do zdarzenia (event), które jest typu takiego delegata, możesz podpiąć metody o zgodnej z delegatem sygnaturze.
No dobra, ale czemu więc moge zrobić tak jak pisałem wyzej? Nigdzie nie deklaruje zadnego eventa a moge dodawac metody do delegata?
W C# delegat jest multicastowy - można używać operatorów +-. Ale przy projektowaniu klasy użyłbyś event, bo wtedy inne klasy nie mogą go wywoływać - tylko klasa, która posiada ten event.
Poza tym eventy są lepsze jeśli chodzi o deklaratywność - są czymś więcej niż zwykły delegat, który jest praktycznie polem.
Etam, plączecie koledze goodfather w głowie, a ma racje.
Pytanie dotyczyło kolejności i odpowiedź padła na samym poczatku.
Nie wmawiajcie mu na siłe że mówi o zdarzeniach kiedy mowi o delegatach.
Delegat służy do "przechowywania" metod (kilka w multicastowym jak napisał Deti), a zdarzenia które opierają sie na delegatach wcale nie są konieczne (w prostych programach).