Udostępnij za pośrednictwem


delegate (odwołanie w C#)

Deklaracja typu delegat przypomina podpis metoda .Ma wartość zwrotu i dowolną liczbę parametrów dowolnego typu:

public delegate void TestDelegate(string message);
public delegate int TestDelegate(MyType m, long num);

A delegate jest typ referencyjny , który może służyć do hermetyzacji nazwanym lub metodaanonimowej.Obiekty delegowane są podobne do wskaźników funkcja w języku C++; Pełnomocnicy są bezpieczny i zabezpieczyć.Aplikacje delegatów, zobacz delegatów i Delegatów Generic.

Uwagi

Obiekty delegowane są podstawą dla zdarzenia.

delegat można tworzyć wystąpienia kojarząc ją z nazwanego lub anonimowe metoda.Aby uzyskać więcej informacji, zobacz Metody o nazwie i Anonimowych metod.

delegat musi być utworzone za pomocą wyrażenia metoda lub lambda ma niezgodny typ zwracany i parametrów wejściowych.Aby uzyskać więcej informacji na temat stopnia odchylenia, który jest dozwolony w podpisie metoda , zobacz Wariancje w delegatach (C# i Visual Basic).Do użytku z metod anonimowych, delegat i kod, który ma być skojarzony z nim są uznane za razem.Oba sposoby delegatów instantiating są omówione w tej sekcji.

Przykład

// Declare delegate -- defines required signature: 
delegate double MathAction(double num);

class DelegateTest
{
    // Regular method that matches signature: 
    static double Double(double input)
    {
        return input * 2;
    }

    static void Main()
    {
        // Instantiate delegate with named method:
        MathAction ma = Double;

        // Invoke delegate ma: 
        double multByTwo = ma(4.5);
        Console.WriteLine("multByTwo: {0}", multByTwo);

        // Instantiate delegate with anonymous method:
        MathAction ma2 = delegate(double input)
        {
            return input * input;
        };

        double square = ma2(5);
        Console.WriteLine("square: {0}", square);

        // Instantiate delegate with lambda expression
        MathAction ma3 = s => s * s * s;
        double cube = ma3(4.375);

        Console.WriteLine("cube: {0}", cube);
    }
    // Output: 
    // multByTwo: 9 
    // square: 25 
    // cube: 83.740234375
}

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też

Informacje

Słowa kluczowe języka C#

Typy odwołań (odwołanie w C#)

Delegaty (Przewodnik programowania w języku C#)

Zdarzenia (Przewodnik programowania w języku C#)

Delegaty z metodami nazwanymi lub anonimowymi (Przewodnik programowania w języku C#)

Metody anonimowe (Przewodnik programowania w języku C#)

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#