Delegaci nie są bezpośrednio o poprawianiu wydajności - dotyczą one wywoływania abstrakcyjnego. W terminologii C++ jest to w istocie jak wskaźnik metody.
Większość zastosowań delegatów to: niezwiązana z wydajnością. Wyjaśnijmy to od samego początku.
Jednak jednym z głównych momentów, w których można to wykorzystać, jest to, że pozwala to na takie scenariusze jak metaprogramowanie. Kod (zwykle kod biblioteki) może konstruować złożone łańcuchy zachowań na podstawie informacji o konfiguracji w czasie wykonywania, a następnie skompilować tę informację do metody za pomocą dowolnego z Expression
, TypeBuilder
lub DynamicMethod
(lub w zasadzie dowolnego API, które pozwala konstruować IL). Ale aby wywołać takiej dynamicznie generowanej metody, potrzebujesz delegata - ponieważ twój statyczny IL, który został skompilowany z C# nie może odnosić się do metody, która nie istnieje w tym czasie.
Należy zauważyć, że alternatywnym sposobem wykonania tego byłoby użycie TypeBuilder
do utworzenia (w czasie wykonywania) nowego typu, który dziedziczy z podklasy lub implementuje znany interfejs, a następnie utworzenia wystąpienia dynamicznie generowanego typu, który może być rzutować na oczekiwane API w zwykły sposób i wywoływać normalnie.
Gdzie przeczytałeś, że "poprawia to wydajność aplikacji?" – dbw
http://www.codeproject.com/Articles/11657/Understanding-Delegates-in-C – thevan
Nie wierz we wszystko, co czytasz. Delegaci nie mają na celu poprawy wydajności. Mają one zapewnić naprawdę czysty, piękny wzór wywołania zwrotnego. –