| 재산 | Value |
|---|---|
| 규칙 ID | IDE0410 |
| Title | 레이블이 지정된 jump 문 사용 |
| 카테고리 | Style |
| 하위 범주 | 언어 규칙(코드 블록 기본 설정) |
| 적용 가능한 언어 | C# 15 이상 |
| Options | csharp_style_prefer_labeled_jump_statements |
개요
보다 명확하고 간결한 중첩 루프 제어 흐름을 위해, 이 규칙은 중첩 루프를 벗어나거나 계속하기 위해 goto 문이나 부울 플래그 패턴을 사용하는 코드를, 대신 레이블이 지정된 break 또는 continue 문(C# 15+)을 사용할 수 있는 경우 플래그로 표시합니다.
규칙은 다음 패턴을 검색합니다.
- 중첩 루프 바로 다음의 레이블로 점프하는
goto문으로,break <label>로 대체할 수 있습니다. - 루프 본문 끝에 있는 빈 레이블로 이동하는 문(
goto)은(는)continue <label>로 바꿀 수 있습니다(즉, 외부 루프를 계속하는 효과를 내는 경우). - 플래그 변수를
true로 설정한 다음, 중첩 루프의 바깥쪽으로 break 또는 continue를 전달하기 위해 각 루프 수준에서 그 변수를 확인하는 부울 플래그 패턴으로, 이는 단일 레이블 지정break <label>또는continue <label>로 대체할 수 있습니다.
옵션
옵션은 규칙을 적용할 동작을 지정합니다. 옵션 구성에 대한 자세한 내용은 옵션 형식을 참조하세요.
csharp_style_prefer_labeled_jump_statements
| 재산 | Value | Description |
|---|---|---|
| 옵션 이름 | C# 스타일에서 레이블이 지정된 점프 문 사용 선호 | |
| 옵션 값 | true |
레이블이 지정된 점프문을 사용하는 것이 좋습니다 |
false |
규칙을 사용하지 않도록 설정 | |
| 기본 옵션 값 | true |
Example
다음 예제에서는 이 규칙이 검색하는 세 가지 패턴을 보여 줍니다.
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;
}
}
}
경고 표시 안 함
단일 위반만 표시하지 않으려면 소스 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 다음 다시 사용하도록 설정합니다.
#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에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET