| 財産 | 価値 |
|---|---|
| ルール識別子 | 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
詳細については、「 コード分析の警告を抑制する方法」を参照してください。
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET