| プロパティ | 価値 |
|---|---|
| ルール識別子 | IDE0410 |
| タイトル | ラベル付きジャンプ ステートメントを使用する |
| Category | Style |
| サブカテゴリー | 言語ルール(コードブロックの設定) |
| 該当する言語 | C# 15 以降 |
| Options | csharp_style_prefer_labeled_jump_statements |
概要
より明確で簡潔な入れ子になったループ制御フローのために、この規則は、ラベル付きのgotoまたはbreakステートメント (C# 15 以降) を代わりに使用できる場合に、continueステートメントまたはブール型フラグ パターンを使用して入れ子になったループから抜け出すか、継続するコードにフラグを設定します。
ルールは次のパターンを検出します。
- 入れ子になったループの直後にラベルにジャンプする
gotoステートメント。break <label>に置き換えることができます。 - ループ本体の末尾にある空のラベルにジャンプする
gotoステートメント (実質的に外側のループを続けます)、continue <label>に置き換えることができます。 - ブール型フラグ パターン。フラグ変数が
trueに設定され、各ループ レベルでチェックされ、改行が伝達されるか、入れ子になったループを介して外側に向かって続行されます。これは、ラベル付けされた 1 つのbreak <label>またはcontinue <label>に置き換えることができます。
オプション
オプションでは、ルールを適用する動作を指定します。 オプションの構成については、「 オプションの形式」を参照してください。
C# スタイル: ラベル付きジャンプ ステートメントを優先する
| プロパティ | 価値 | Description |
|---|---|---|
| オプション名 | ラベル付きジャンプ文を優先する C# スタイル | |
| オプション値 | true |
ラベル付きジャンプ ステートメントを優先する |
false |
ルールを無効にします。 | |
| 既定のオプション値 | true |
Example
次の例は、このルールで検出される 3 つのパターンを示しています。
goto が break ラベルに置き換えられた
// Code with violations.
for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
if (x * y > 20)
goto found;
}
}
found:
Console.WriteLine("Done");
// Fixed code.
found: for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
if (x * y > 20)
break found;
}
}
Console.WriteLine("Done");
goto を continue ラベルに置き換える
// Code with violations.
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
goto next;
}
next: ; // The empty statement is required; a label in C# must be followed by a statement.
}
// Fixed code.
next: for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
continue next;
}
}
フラグ パターンを区切りラベルに置き換える
// Code with violations.
bool found = false;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i * j > 20)
{
found = true;
break;
}
}
if (found)
break;
}
// Fixed code.
loop_i: for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i * j > 20)
{
break loop_i;
}
}
}
警告を抑制する
1 つの違反のみを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、ルールを再度有効にします。
#pragma warning disable IDE0410
// The code that's violating the rule is on this line.
#pragma warning restore IDE0410
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、noneでその重要度をに設定します。
[*.cs]
dotnet_diagnostic.IDE0410.severity = none
すべてのコード スタイル規則を無効にするには、Styleでカテゴリ none の重要度を に設定してください。
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
詳細については、「 コード分析の警告を抑制する方法」を参照してください。
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET