gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
De delegate
operator maakt een anonieme methode die kan worden geconverteerd naar een gemachtigde. Een anonieme methode kan worden geconverteerd naar typen, zoals System.Action typen die System.Func<TResult> als argumenten worden gebruikt voor veel methoden.
Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4)); // output: 7
Notitie
Lambda-expressies bieden een beknoptere en expressieve manier om een anonieme functie te maken. Gebruik de operator => om een lambda-expressie samen te stellen:
Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 4)); // output: 7
Zie Lambda-expressies voor meer informatie over functies van lambda-expressies, bijvoorbeeld het vastleggen van buitenste variabelen.
Wanneer u de delegate
operator gebruikt, kunt u de lijst met parameters weglaten. Als u dit doet, kan de gemaakte anonieme methode worden geconverteerd naar een gemachtigdentype met een lijst met parameters, zoals in het volgende voorbeeld wordt weergegeven:
Action greet = delegate { Console.WriteLine("Hello!"); };
greet();
Action<int, double> introduce = delegate { Console.WriteLine("This is world!"); };
introduce(42, 2.7);
// Output:
// Hello!
// This is world!
Dat is de enige functionaliteit van anonieme methoden die niet worden ondersteund door lambda-expressies. In alle andere gevallen is een lambda-expressie een voorkeurswijze om inlinecode te schrijven. U kunt verwijderingen gebruiken om twee of meer invoerparameters op te geven van een anonieme methode die niet door de methode wordt gebruikt:
Func<int, int, int> constant = delegate (int _, int _) { return 42; };
Console.WriteLine(constant(3, 4)); // output: 42
Voor compatibiliteit met eerdere versies wordt, als er slechts één parameter wordt genoemd _
, _
behandeld als de naam van die parameter binnen een anonieme methode.
U kunt de static
wijzigingsfunctie gebruiken bij de declaratie van een anonieme methode:
Func<int, int, int> sum = static delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(10, 4)); // output: 14
Een statische anonieme methode kan geen lokale variabelen of instantiestatus vastleggen uit het insluiten van bereiken.
U gebruikt ook het delegate
trefwoord om een gemachtigdentype te declareren.
Vanaf C# 11 kan de compiler het gemachtigde object opslaan dat is gemaakt op basis van een methodegroep. Houd rekening met de volgende methode:
static void StaticFunction() { }
Wanneer u de methodegroep toewijst aan een gemachtigde, slaat de compiler de gemachtigde in de cache op:
Action a = StaticFunction;
Voor C# 11 moet u een lambda-expressie gebruiken om één gedelegeerde-object opnieuw te gebruiken:
Action a = () => StaticFunction();
Zie de sectie Anonieme functie-expressies van de C#-taalspecificatie voor meer informatie.
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven:
gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registreren