/ / Zapisujte delegátov bez toho, aby ste kód kódovali - c #, delegáti

Napíšte delegátov bez toho, aby ste zmiňovali kód - c #, delegátov

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ď č. 1

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