Školení
Postup výuky
Vytváření metod v konzolových aplikacích jazyka C# (Začínáme s C#, část 5) - Training
Tento studijní program se zabývá syntaxí vytváření a používání metod v konzolových aplikacích jazyka C#.
Tento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Když přiřadíte metodu delegátovi, kovariance a kontravariance poskytují flexibilitu pro porovnávání typu delegáta s podpisem metody. Kovariance umožňuje, aby metoda měla návratový typ, který je odvozenější než ten definovaný v delegátu. Kontravariance umožňuje metodu, která má typy parametrů, které jsou méně odvozené než ty v typu delegáta.
Tento příklad ukazuje, jak lze delegáty použít s metodami, které mají návratové typy odvozené od návratového typu v podpisu delegáta. Datový typ vrácený typem DogsHandler
je typu Dogs
, který je odvozen od Mammals
typu, který je definován v delegátu.
class Mammals {}
class Dogs : Mammals {}
class Program
{
// Define the delegate.
public delegate Mammals HandlerMethod();
public static Mammals MammalsHandler()
{
return null;
}
public static Dogs DogsHandler()
{
return null;
}
static void Test()
{
HandlerMethod handlerMammals = MammalsHandler;
// Covariance enables this assignment.
HandlerMethod handlerDogs = DogsHandler;
}
}
Tento příklad ukazuje, jak lze delegáty použít s metodami, které mají parametry, jejichž typy jsou základní typy typu parametru podpisu delegáta. Při kontravarianci můžete místo samostatných obslužných rutin použít jednu obslužnou rutinu události. Následující příklad používá dva delegáty:
Delegát KeyEventHandler , který definuje podpis události Button.KeyDown . Jeho podpis je:
public delegate void KeyEventHandler(object sender, KeyEventArgs e)
Delegát MouseEventHandler , který definuje podpis události Button.MouseClick . Jeho podpis je:
public delegate void MouseEventHandler(object sender, MouseEventArgs e)
Příklad definuje obslužnou rutinu události s parametrem EventArgs a používá ji ke zpracování Button.KeyDown
událostí i Button.MouseClick
událostí. Může to udělat, protože EventArgs je základním typem obojího KeyEventArgs i MouseEventArgs.
// Event handler that accepts a parameter of the EventArgs type.
private void MultiHandler(object sender, System.EventArgs e)
{
label1.Text = System.DateTime.Now.ToString();
}
public Form1()
{
InitializeComponent();
// You can use a method that has an EventArgs parameter,
// although the event expects the KeyEventArgs parameter.
this.button1.KeyDown += this.MultiHandler;
// You can use the same method
// for an event that expects the MouseEventArgs parameter.
this.button1.MouseClick += this.MultiHandler;
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Školení
Postup výuky
Vytváření metod v konzolových aplikacích jazyka C# (Začínáme s C#, část 5) - Training
Tento studijní program se zabývá syntaxí vytváření a používání metod v konzolových aplikacích jazyka C#.
Dokumentace
Použití odchylek pro obecné delegáty Func a Action - C#
Seznamte se s používáním kovariance a kontravariance v obecných delegátech Func a Action, abyste získali větší flexibilitu v kódu.
Delegáti s pojmenovanými vs. anonymními metodami - C#
Seznamte se s delegáty s pojmenovanými a anonymními metodami. Podívejte se na příklady kódu a prohlédněte si další dostupné prostředky.
Jak deklarovat, vytvořit instanci a používat delegáta - C#
Zjistěte, jak deklarovat, vytvořit instanci a používat delegáta. Podívejte se na příklady, které pokrývají C# 1.0, 2.0 a 3.0 a novější.