Heim >Backend-Entwicklung >C++ >Wie kann ich Ausgabeparameter mit asynchronen Methoden in .NET verwenden?
Asynchronität und Ausgabeparameter: Ein Dilemma
Entwickler stehen oft vor der Notwendigkeit, asynchrone Methoden mit Ausgabeparametern zu schreiben, aber das .NET Framework stellt dies dar eine Herausforderung in dieser Hinsicht.
Die Problem
Der folgende Codeausschnitt veranschaulicht das Problem:
public async void Method1() { int op; int result = await GetDataTaskAsync(out op); }
Dieser Code versucht, eine asynchrone Methode mit einem Ausgabeparameter zu erstellen, aber eine solche Funktion ist in .NET nicht verfügbar Rahmen.
Die Begründung
Laut Lucian Laut Wischik, einem Microsoft-Ingenieur, ergibt sich diese Einschränkung aus der Art und Weise, wie asynchrone Methoden in der CLR implementiert werden. Sie werden vom Compiler in State-Machine-Objekte umgewandelt, denen ein sicherer Mechanismus zum Speichern der Adresse von Out- oder Referenzparametern fehlt.
Workaround
Ein gängiger Workaround besteht darin, dass die asynchrone Methode ein Tupel zurückgibt:
public async Task Method1() { var tuple = await GetDataTaskAsync(); int op = tuple.Item1; int result = tuple.Item2; } public async Task<Tuple<int, int>> GetDataTaskAsync() { //... return new Tuple<int, int>(1, 2); }
Dieser Ansatz bietet eine Möglichkeit, mehrere Werte von der asynchronen Methode zurückzugeben, ohne auf out zurückgreifen zu müssen Parameter.
Das obige ist der detaillierte Inhalt vonWie kann ich Ausgabeparameter mit asynchronen Methoden in .NET verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!