Píšem delegátov takto.
delegate void MyMethod(string arg1, string arg2);
MyMethod mm;
Neviem, prečo potrebuje dve linky na vyhláseniejedného delegáta. Ak má moja trieda 20 delegátov, musím napísať 40 riadkov kódu. Môže mi niekto povedať, ako to napísať v jednom riadku kódu? Vopred ďakujem.
odpovede:
10 pre odpoveď č. 1Tu vyhlasujete dve veľmi odlišné veci:
- Prvý riadok deklaruje delegáta typ volal
MyMethod
- Druhý riadok deklaruje a lúka tohto typu delegáta
Je dôležité pochopiť rozdiel, pretože potom môžete zistiť, kedy naozaj chcete vyhlásiť nový typ delegáta a kedy proste chcete vyhlásiť oblasť existujúceho delegátatypu. Ak má vaša trieda 20 delegovaných polí, takmer určite nechcete pre každý z nich deklarovať nový typ. Ak majú rovnaký podpis, môžete použiť jeden typ ... alebo lepšie, stačí použiť jeden z typy rámcov, ako napr Action<...>
alebo Func<...>
.
Action<string, string> mm;
(Existujú Action
delegátov void
typy návratov a Func
delegátov prevoid
typy návratov, s rôznym počtom parametrov, všetky sú vyjadrené genericky. Ďalšie informácie nájdete na stránke MSDN.)