팁 (조언)
이 문서는 이미 하나 이상의 프로그래밍 언어를 알고 있으며 C#을 학습하는 개발자를 위한 기본 사항 섹션의 일부입니다. 프로그래밍을 처음 접하는 경우 먼저 시작 자습서로 시작 하세요. 전체 구문은 언어 참조의 선택 문을 참조하세요.
다른 언어에서 오시겠습니까? C++, Java 및 JavaScript는 모두 C의 유산을 공유하므로 ifelseswitch C#에서 동일한 내용을 읽습니다. 주목할 만한 차이점이 한 가지 있습니다. C#에서는 비어 있지 않은 switch case 사이의 fall-through를 허용하지 않으며, 각 case 레이블은 상수뿐만 아니라 패턴도 검사할 수 있습니다. Python에서 넘어왔다면 C#의 if/else if/else는 if/elif/else에 대응하며, C#의 패턴 기반 switch은 Python의 match 문과 가장 가깝습니다.
선택 문은 조건에 따라 실행되는 코드 블록을 선택합니다. C#은 두 가지를 제공합니다. 부울 값에 따라 분기하기 위한 if(선택적 else 포함)와 하나의 값을 여러 경우와 비교하기 위한 switch입니다.
부울 식은 true와 같은 비교식처럼 false 또는 temperature >= 25로 평가되는 모든 식입니다.
if 및 else이 있는 분기
if 문은 해당 부울 식이 true일 때만 해당 블록을 실행합니다.
else 조건이 false다음과 같은 경우 실행되는 코드를 제공하는 블록을 추가합니다.
int temperature = 28;
// An if statement runs its block only when the condition is true.
// The else block runs when the condition is false.
if (temperature >= 25)
{
Console.WriteLine("Warm"); // => Warm
}
else
{
Console.WriteLine("Cool");
}
if 또는 else의 본문은 할당문이나 메서드 호출과 같은 단일 문입니다.
블록 문 자체는 0개 이상의 문을 중괄호({ })로 묶는 단일 문입니다.
많은 코딩 표준에서는 단일 문에 대해서도 분기 본문을 중괄호로 묶는 것이 좋습니다. 중괄호는 범위를 명확히 합니다. 이는 일반적인 실수를 방지합니다. 나중에 조건부로 실행될 것으로 예상되는 두 번째 줄을 추가하지만, 대신 무조건 실행됩니다. 오직 중괄호만이 어떤 문이 그 분기에 속하는지를 결정합니다. C#은 공백을 중요하게 취급하지 않으므로 들여쓰기만으로는 처리되지 않습니다. 중괄호는 한 줄짜리 코드에도 허용됩니다. 블록은 해당 분기에서 실행되는 단일 문입니다. 가독성을 위해 코드를 들여쓰지만 중괄호를 사용하여 블록을 정의합니다.
else if를 사용하여 여러 조건을 테스트
두 개 이상의 경로 중에서 선택하려면 조건을 .로 else if연결합니다. C#은 true각 조건을 순서대로 평가하고 조건이 있는 첫 번째 블록을 실행한 다음 나머지는 건너뜁니다. 마지막 else 은 나머지 모든 사례를 처리합니다.
int score = 82;
// Chain conditions with else if. The first branch whose condition is
// true runs; the compiler skips the rest.
string grade;
if (score >= 90)
{
grade = "A";
}
else if (score >= 80)
{
grade = "B";
}
else if (score >= 70)
{
grade = "C";
}
else
{
grade = "F";
}
Console.WriteLine(grade); // => B
순서는 체인에서 중요합니다. 첫 번째 일치 조건이 승리하기 때문에 가장 구체적인 조건을 먼저 배치합니다. 이전 예제에서 score >= 80 전에 score >= 70를 테스트하면 82점이 "B"가 아니라 "C"에 매핑되도록 보장합니다.
값을 switch 구문과 일치시키기
단일 값을 여러 개별 경우와 비교할 때는 긴 switch 체인보다 else if 문이 더 명확합니다. 마찬가지로 if이 switch 문은 분기 문입니다. 실행할 코드를 선택합니다. 각 case 레이블에는 일치시킬 값이 나열되며, 각 case 섹션은 break 문으로 끝납니다. 레이블을 쌓아 하나의 본문을 공유하고, 어느 case와도 일치하지 않는 값에는 default 섹션을 사용합니다.
DayOfWeek day = DayOfWeek.Saturday;
// A switch statement compares one value against several case labels.
// Stacked labels share a body. Each section ends with break, and the
// default section runs when no case matches.
switch (day)
{
case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
Console.WriteLine("Weekend"); // => Weekend
break;
default:
Console.WriteLine("Weekday");
break;
}
C 및 Java와 달리 C#에서는 비어 있지 않은 한 case 섹션에서 다음 섹션으로 실행이 그대로 넘어가도록 허용하지 않습니다. 코드를 포함하는 모든 섹션은 반드시 break(또는 return이나 goto와 같은 다른 점프 문)으로 끝나야 합니다. 이 규칙은 해당 언어에서 일반적인 실수로 인한 낙하 버그를 방지합니다.
case 및 when로 패턴 테스트
레이블은 case 상수 값으로 제한되지 않습니다. 데이터의 모양이나 값을 설명하는 규칙인 패턴을 테스트할 수 있습니다. 같은 < 0 관계형 패턴은 0보다 작은 모든 값과 일치합니다. 사례가 일치하려면 when이어야 하는 추가 조건을 연결하는 true 절을 추가합니다.
int measurement = 42;
// A case label can test a pattern instead of a constant. A when clause
// adds a condition that must also be true for the case to match.
switch (measurement)
{
case < 0:
Console.WriteLine("Negative");
break;
case 0:
Console.WriteLine("Zero");
break;
case > 0 when measurement % 2 == 0:
Console.WriteLine("Positive and even"); // => Positive and even
break;
default:
Console.WriteLine("Positive and odd");
break;
}
패턴 기반 사례는 위에서 아래로 평가되므로 보다 구체적인 패턴은 보다 일반적인 패턴 앞에 속합니다. 패턴의 전체 카탈로그는 패턴 일치를 참조하세요.
식이 있는 값 선택
if 문과 switch 문은 어떤 코드가 실행될지 결정합니다. 대신 값을 선택해야 하는 경우 식을 사용합니다. 식은 값으로 계산되므로 할당문의 오른쪽이나 메서드 인수처럼 값이 필요한 모든 곳에서 사용할 수 있습니다. C#은 조건 연산자 및 식과 switch 같은 대체에서 값을 선택하는 식 양식을 제공합니다.
조건부 연산자 ?:
조건부 연산 ?: 자는 부울 조건에 따라 두 값 중 하나를 선택합니다.
구문, 단락 평가 동작 및 if/else 대신 이 연산자를 선택하는 방법에 대한 지침은 조건부 연산자?:를 참조하세요.
switch 식
switch 식은 switch 문에 대응하는 식입니다. 일치하는 사례에 대한 코드를 실행하는 대신 값으로 평가됩니다. 명령문의 각 팔에 switch 값을 할당하는 것보다 더 간결하며, 팔이 가능한 모든 입력을 다루지 않을 때 컴파일러가 경고합니다.
switch 식은 패턴 매칭의 핵심 부분입니다. 사용 시기와 방법을 알아보려면 패턴 일치 및 식 참조를 switch 참조하세요.
참고하십시오
.NET