Sdílet prostřednictvím


delegate (Referenční dokumentace jazyka C#)

Prohlášení o typ delegát je podobný metoda signatura.Má hodnotu vrácení a libovolný počet parametrů typu:

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

A delegate je typ odkazovat se , který slouží k zapouzdření pojmenovanou nebo anonymní metoda.Delegáti jsou podobné ukazatele funkce v jazyce C++; Delegáti se však zajišťující bezpečnost typů a zabezpečení.Aplikace delegátů, viz Delegáti a Generic Delegáti.

Poznámky

Delegáti jsou základem pro události.

delegát lze vytvořit instanci pomocí přidružení buď s pojmenovanou nebo anonymní metoda.Další informace naleznete v tématu s názvem metody a Anonymní metody.

delegát musí být vytvořena pomocí metoda nebo lambda výraz, který má kompatibilní návratový typ a vstupní parametry.Další informace o stupeň odchylku, která je povolena metodasignaturaviz Odchylky v delegátech (C# and Visual Basic). Pro použití s anonymní metody delegát a kód se s ním související jsou deklarovány společně.V této části jsou popsány oba způsoby konkretizujete delegátů.

Příklad

// 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
}

Specifikace jazyka C#

Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také

Referenční dokumentace

Klíčová slova jazyka C#

Typy odkazů (Referenční dokumentace jazyka C#)

Delegáti (Průvodce programováním v C#)

Události (Průvodce programováním v C#)

Delegáti s pojmenovanými vs. anonymními metodami (Průvodce programováním v C#)

Anonymní metody (Průvodce programováním v C#)

Koncepty

Průvodce programováním v C#

Další zdroje

Referenční dokumentace jazyka C#