0

次の 2 つの非同期メソッドがあります。

protected async Task<bool> DoSomething(byte[] data) {
    await System.Console.Out.WriteLineAsync("Do things.");
    Data refinedData = Data.fromByteArray(data);
    return DoSomething(refinedData); // Compiler error!
}

protected async Task<bool> DoSomething(Data data) {
    /* Do way more interesting things with data now that it's our type! */
    return true;
}

私がやりたいことはawait、最初の return ステートメントで使用する必要はなく、 の 2 番目のオーバーライドに渡すだけですDoSomething。2番目のオーバーライドの戻り時に呼び出して、生成されたTaskインスタンスを延期できる特別なメソッド、または使用できる/使用する必要がある特定の言語メカニズムはありますか?

4

1 に答える 1

3

最初のメソッド シグネチャから async キーワードを削除するか、戻る前に await キーワードを使用する必要があります。

return await DoSomething(refinedData);

于 2014-03-13T21:53:25.720 に答える