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
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#