Task.CompletedTask に相当する ValueTask は何ですか? 質問する

Task.CompletedTask に相当する ValueTask は何ですか? 質問する

IAsyncDisposableを返す必要がある を実装していますValueTaskが、dispose メソッドが何もしないことがあります。この場合はどのように返せばいいでしょうか?

現時点では、 return はnew ValueTask(Task.CompletedTask)機能しているように見えますが、 valueTasks のポイントは不要なヒープ オブジェクトの作成を避けることなので、よりシンプルで効率的な方法があるはずです。

ベストアンサー1

すべての構造体にはデフォルトコンストラクタがあります。ValueTask完了した を作成しますValueTask:

var completedValueTask = new ValueTask();

あるいは、次のようにもできます。

ValueTask completedValueTask = default;

アップデート:公式文書以下の注記が更新されました:

パラメータなしのコンストラクターまたは構文 (ゼロ初期化された構造体) によって作成されたインスタンスはdefault(ValueTask)、同期的に正常に完了した操作を表します。

おすすめ記事