メソッドを同期 (IDE0390とIDE0391) にする

財産 価値
ルール識別子 IDE0390、IDE0391
タイトル メソッドを同期させる
Category Style
サブカテゴリー 不要なコード規則 (修飾子の基本設定)
該当する言語 C#
Options なし

Overview

これらのルールは、async式を含まないメソッドawaitフラグを設定します。 パフォーマンスを向上させるには、async修飾子を削除し、戻り値の型を調整します。これは、何もasyncしないawaitメソッドが同期的に実行されますが、非同期ステート マシンのオーバーヘッドがあるためです。

2 つのルールは、さまざまなシナリオを対象とします。

  • IDE0390: インターフェイスの実装やオーバーライドではない async メソッド、ローカル関数、ラムダ式を報告します。
  • IDE0391: インターフェイス メンバーを実装したり、基底クラス メソッドをオーバーライドしたりする async メソッドを報告します。

呼び出し元がインターフェイスを介してメソッドを await する機能が壊れないようにするには、インターフェイスの実装またはオーバーライドに修正プログラムを適用するときは注意が必要です。 asyncを削除すると、その場合、動作に異なる影響を与える可能性があります。

Example

// Code with violations.

// IDE0390: Regular method with no 'await'.
public async Task<int> GetValueAsync()
{
    return 42;
}

// IDE0391: Override method with no 'await'.
public override async Task<string> GetNameAsync()
{
    return "example";
}

// Fixed code.

// Remove 'async' and return the value directly.
public Task<int> GetValueAsync()
{
    return Task.FromResult(42);
}

// Remove 'async' and return the value directly.
public override Task<string> GetNameAsync()
{
    return Task.FromResult("example");
}

警告を抑制する

1 つの違反のみを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、ルールを再度有効にします。

#pragma warning disable IDE0390
// The code that's violating the rule is on this line.
#pragma warning restore IDE0390

ファイル、フォルダー、またはプロジェクトのルールを無効にするには、noneでその重要度をに設定します。

[*.cs]
dotnet_diagnostic.IDE0390.severity = none
dotnet_diagnostic.IDE0391.severity = none

すべてのコード スタイル規則を無効にするには、Styleでカテゴリ none の重要度を に設定してください。

[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none

詳細については、「 コード分析の警告を抑制する方法」を参照してください。

こちらも参照ください