Delegate
Słowo kluczowe delegate służy do deklarowania tzw. delegatów:
using System; namespace FooApp { class Program { delegate void Foo(string Value); static void Bar(string Value) { Console.WriteLine(Value); } static void Main(string[] args) { Foo MyFoo = new Foo(Bar); MyFoo("Hello World!"); Console.Read(); } } }
Więcej informacji na temat delegatów, znajdziesz w osobnym artykule.
Zobacz też:
6 komentarzy
<quote=Marooned>Niezbyt rozumiem przykład - funkcja podana jako parametr [niezgodny, bo zwraca void a nie string jakby] zostaje wywołana? Dziwnie nieco..</quote>Dawno i nie prawda ;) Już kumam i nawet używam ;]
Człowiek uczy się przez całe życie w końcu :)
Może i powszechnie stosowane, ale jak ktoś nie wie to stąd się nie dowie.
Ja się chyba spotkałem z terminem "delegatura", ale mogę się mylić czy to było o tym. Natomiast "delegaty" nigdy nie spotkałem.
Co więcej.. chciałem się dowiedzieć więcej na ten temat, a w tym arcie informacji zero :(
Niezbyt rozumiem przykład - funkcja podana jako parametr [niezgodny, bo zwraca void a nie string jakby] zostaje wywołana? Dziwnie nieco..
Póki co myślałem, że delegate stosuje się tylko do deklaracji funkcji anonimowych:
obiekt.zdarzenie += delegate { /* tu cos robimy */ }
Przydatne np. tu:
image.GetThumbnailImage(100, 100, new System.Drawing.Image.GetThumbnailImageAbort(delegate { return true; }), IntPtr.Zero);Dzięki czemu nie trzeba tworzyć osobnej metody zajmującej niepotrzebnie miejsce:
public bool ThumbnailCallback() { return true; }i pisać
image.GetThumbnailImage(100, 100, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
Znowu jakies dziwne tłumaczenie :/ Nie lepiej po prostu nazwać to "delegacje"?
No przecież dobrze wytłumaczone i jasne, a jeśli ktoś nie rozumie to niech zacznie czytać artykuł od początku, a nie zaczyna od delegatów i myśli, że się programować nauczy.