Delegaty - kolejość wykonywania metod w delegacie

0

Witam.
Czy kolejnosc w jakiej wykonaja sie metody dodane do delegata zalezy od kolejnosci w jakiej zostały one dodane?

0

nie masz czasem na mysli zdarzeń ?

jesli tak to raczej w kolejnosci dodania

0

Tak jak kolega napisał - w kolejności dodania (zresztą, chyba łatwo to sprawdzić).

.. i mówisz o zdarzeniach - delegaty to co innego.

0
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
}
0
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.

0

No dobra, ale czemu więc moge zrobić tak jak pisałem wyzej? Nigdzie nie deklaruje zadnego eventa a moge dodawac metody do delegata?

0

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.

0

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).

1 użytkowników online, w tym zalogowanych: 0, gości: 1