Programowanie w języku C#

Delegate

  • 2010-10-31 18:27
  • 6 komentarzy
  • 2629 odsłon
  • Oceń ten tekst jako pierwszy
delegate - słowo kluczowe języka C#

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

tgrobi 2011-02-25 11:16

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.

Marooned 2007-07-07 01:07

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

lolobo 2007-05-10 02:58

Może i powszechnie stosowane, ale jak ktoś nie wie to stąd się nie dowie.

Marooned 2007-05-02 17:55

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

Adam Boduch 2006-06-25 11:12

Dziwne? Powszechnie stosowane.

Kooba 2006-06-25 11:07

Znowu jakies dziwne tłumaczenie :/ Nie lepiej po prostu nazwać to "delegacje"?