연습 - switch 문 구현
- 11분
switch
문은 C# 선택문입니다. 이 문은 if-elseif-else
분기 구문에 대한 대안을 제공합니다. 단일 값을 알려진 일치 값 목록과 비교할 때, switch
문장은 if-elseif-else
구조에 비해 이점을 제공합니다.
다음 시나리오를 고려하세요.
- 식품 영양과 관련된 애플리케이션을 작업하고 있습니다. 코드 섹션은 과일을 다룹니다.
- 코드에는 다양한 유형의 과일 이름을 보유하는 데 사용되는 변수
fruit
가 포함됩니다. - 애플리케이션에 중점을 두는 20개의 과일 목록이 있습니다.
- 할당된 값을 기반으로 코드를 분기하려고 합니다
fruit
.
이 시나리오에서는 switch
구문을 사용하여 각 과일 유형에 대해 별도의 분기를 만들 수 있습니다.
switch 문은 어떻게 작동하나요?
switch
문은 가능한 switch 섹션 목록에서 실행할 코드 섹션 하나를 선택합니다. 선택한 스위치 섹션 은 문의 일치 식과 패턴 일치를 기반으로 선택됩니다.
다음 코드 샘플은 switch
문 기본 구조를 보여줍니다.
switch (fruit)
{
case "apple":
Console.WriteLine($"App will display information for apple.");
break;
case "banana":
Console.WriteLine($"App will display information for banana.");
break;
case "cherry":
Console.WriteLine($"App will display information for cherry.");
break;
}
일치 식(스위치 식이라고도 함)은 이 경우 switch
키워드 다음 (fruit)
값입니다. 각 스위치 섹션 은 사례 패턴에 의해 정의됩니다. 사례 패턴은 키워드 case
와 값을 사용하여 생성됩니다. 이 예제의 첫 번째 사례 패턴은 다음과 case "apple":
같습니다. 사례 패턴은 true
또는 false
로 평가되는 부울식입니다. 각 스위치 섹션에는 케이스 패턴이 매치 표현식과 일치하는 경우 실행되는 몇 줄의 코드가 포함되어 있습니다. 이 예에서 fruit
에 "apple" 값이 할당되면, 첫 번째 조건 패턴은 true
로 평가되어 그 스위치 섹션이 실행됩니다.
switch 문에는 하나 이상의 스위치 섹션이 포함되어야 하지만 일반적으로 세 개 이상의 스위치 섹션이 포함됩니다.
스위치는 다음 경우에 가장 잘 사용됩니다.
- 가능한 여러 값과 일치시킬 단일 값(변수 또는 식)이 있습니다.
- 한 경기 또는 매치에 대해 최대 몇 줄의 코드만 실행하면 됩니다.
비고
이 첫 번째 문 예제 switch
는 의도적으로 간단하며 구문을 간단히 살펴보았습니다. 아래 섹션에서 몇 가지 고급 시나리오를 다룰 때 switch
명령문의 추가 기능을 검토할 것입니다.
이제 코딩 환경을 준비하고 고유한 switch
명령문 개발을 시작할 차례입니다.
코딩 환경 준비
이 모듈에는 데모 코드를 빌드하고 실행하는 프로세스를 안내하는 실습 활동이 포함되어 있습니다. Visual Studio Code를 개발 환경으로 사용하여 이러한 활동을 완료하는 것이 좋습니다. 이러한 활동에 Visual Studio Code를 사용하면 전 세계 전문가가 사용하는 개발자 환경에서 코드를 더 편안하게 작성하고 실행하는 데 도움이 됩니다.
Visual Studio Code를 엽니다.
Windows 시작 메뉴(또는 다른 OS의 해당 리소스)를 사용하여 Visual Studio Code를 열 수 있습니다.
Visual Studio Code 파일 메뉴에서 폴더 열기를 선택합니다.
폴더 열기 대화 상자에서 Windows 데스크톱 폴더로 이동합니다.
코드 프로젝트를 유지하는 다른 폴더 위치가 있는 경우 해당 폴더 위치를 대신 사용할 수 있습니다. 이 학습에서는 쉽게 기억하고 찾을 수 있는 위치를 사용하는 것이 중요합니다.
폴더 열기 대화 상자에서 폴더 선택을 선택합니다.
작성자를 신뢰할 수 있는지 묻는 보안 대화 상자가 표시되면 예를 선택합니다.
Visual Studio Code 터미널 메뉴에서 새 터미널을 선택합니다.
터미널 패널의 명령 프롬프트에 현재 폴더의 폴더 경로가 표시됩니다. 다음은 그 예입니다.
C:\Users\someuser\Desktop>
비고
샌드박스 또는 호스트된 환경이 아닌 자체 PC에서 작업하고 이 C# 시리즈에서 다른 Microsoft Learn 모듈을 완료한 경우 이미 코드 샘플용 프로젝트 폴더를 만들었을 수 있습니다. 이 경우 TestProject 폴더에 콘솔 앱을 만드는 데 사용되는 다음 단계를 건너뛸 수 있습니다.
터미널 명령 프롬프트에서 지정된 폴더에 새 콘솔 애플리케이션을 만들려면 다음 프롬프트를 입력합니다.
dotnet new console -o ./CsharpProjects/TestProject
이 .NET CLI 명령은 .NET 프로그램 템플릿을 사용하여 지정된 폴더 위치에 새 C# 콘솔 애플리케이션 프로젝트를 만듭니다. 이 명령은 CsharpProjects 및 TestProject 폴더를 만들고 TestProject를
.csproj
파일의 이름으로 사용합니다.파일이 이미 있다는 메시지가 표시되면 다음 단계를 계속 진행합니다. 기존 프로젝트 파일을 다시 사용합니다.
탐색기 보기에서 CsharpProjects 폴더를 확장합니다 .
TestProject 폴더와 두 개의 파일, 즉 Program.cs C# 프로그램 파일과 TestProject.csproj라는 C# 프로젝트 파일이 표시됩니다.
Visual Studio Code 파일 메뉴에서 폴더 열기를 선택합니다.
폴더 열기 대화 상자에서 CsharpProjects 폴더를 선택한 다음 폴더 선택을 선택합니다.
탐색기 보기에서 TestProject 폴더를 확장한 다음 , Program.cs 선택합니다.
기존 코드 줄을 삭제합니다.
이 모듈 중에 이 C# 콘솔 프로젝트를 사용하여 코드 샘플을 만들고, 빌드하고, 실행합니다.
터미널 패널을 닫습니다.
switch 문 만들기 및 테스트
Visual Studio Code가 열려 있고 편집기 패널에 Program.cs가 표시되는지 확인합니다.
비고
Program.cs는 비어 있어야 합니다. 그렇지 않은 경우 모든 코드 줄을 선택하고 삭제합니다.
Visual Studio Code 편집기에 다음 코드를 입력합니다.
int employeeLevel = 200; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: title = "Junior Associate"; break; case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");
Visual Studio Code 파일 메뉴에서 저장을 선택합니다.
코드를 빌드하거나 실행하기 전에 Program.cs 파일을 저장해야 합니다.
탐색기 패널에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.
터미널 패널이 열립니다. 터미널에는 터미널이 TestProject 폴더 위치에 열려 있음을 보여 주는 명령 프롬프트가 포함되어야 합니다.
터미널 명령 프롬프트에서 코드를 실행하려면 dotnet run 을 입력한 다음 Enter 키를 누릅니다.
비고
“실행할 프로젝트를 찾을 수 없습니다.”라는 메시지가 표시되면 터미널 명령 프롬프트에 예상되는 TestProject 폴더 위치가 표시되는지 확인합니다. 예:
C:\Users\someuser\Desktop\csharpprojects\TestProject>
다음과 같은 출력이 표시됩니다.
John Smith, Senior Associate
입력한
switch
문장을 검토하는 데 잠시 시간을 내세요.알아두시기 바랍니다:
switch
문장이 단일 코드 블록을 정의합니다.이 문은
switch
스위치 섹션 목록을 포함하는 단일 코드 블록을 정의합니다.switch
키워드 오른쪽에는 괄호로 묶인 switch 언어 식이 있습니다.코드 블록 내의 스위치 섹션 목록을 확인합니다.
코드 블록에는
switch
각각 하나 이상의 스위치 레이블이 포함된 스위치 섹션 목록이 포함되어 있습니다. 또한 각 스위치 섹션에는 레이블이 switch 문의 맨 위에 정의된 switch 식과 같으면 실행되는 문 목록이 포함됩니다.switch 식은 switch 식과 같은 값을 찾을 때까지 위에서 아래로 사례 레이블에 대해 평가됩니다. 일치하는 레이블이 없으면 사례에 대한
default
문 목록이 실행됩니다. 기본값이 포함되지 않으면 switch 문의 끝점으로 컨트롤이 전송됩니다. 각 레이블은 switch 식에 지정된 형식과 일치하는 값 형식을 제공해야 합니다.비고
선택적
default
레이블은 스위치 섹션 목록 내의 모든 위치에 표시할 수 있습니다. 그러나 대부분의 개발자는 최종 옵션으로 배치하는 것이 (논리적으로) 더 합리적이기 때문에 마지막에 배치default
하도록 선택합니다. 위치에 관계없이default
섹션은 마지막으로 평가됩니다.이 예제에서
- switch 식은
(employeeLevel)
입니다. - 각 스위치 섹션에는 단일 스위치 레이블(
case
또는default
)이 있습니다. - 일치하는 스위치 섹션은
case: 200
에 의해 정의되며,employeeLevel = 200
때문에 그렇습니다.
- switch 식은
각 스위치 섹션은 다음 섹션과 구분됩니다.
하나의 switch 섹션만 실행할 수 있습니다. 즉, 스위치 섹션의 실행은 다음 스위치 섹션을 "통과"할 수 없습니다. 키워드
break
는 스위치 섹션을 다음 섹션으로 이동하기 전에 종료하는 여러 가지 방법 중 하나입니다.break
키워드(또는 선택적으로return
키워드)를 잊은 경우 컴파일러에서 오류를 생성합니다.
switch 문이 이를 평가하는 방법을 확인하도록 수준 변수 값을 변경합니다.
기본 사례를 실행하려면 값 할당을 수정하여 직원의 수준을 변경해 보겠습니다.
할당된
employeeLevel
값을 수정하려면 다음과 같이 코드를 업데이트합니다.int employeeLevel = 201;
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run
을 입력하여 코드를 실행합니다.출력이 변경되었습니다.
이제 코드를 실행할 때 더 일반적인 타이틀이 사용되는 것을 볼 수 있습니다.
John Smith, Associate
employeeLevel
은 레이블과 일치하지 않으므로default
레이블이 일치합니다.
여러 레이블을 포함하도록 스위치 섹션 수정
우리 회사가 모든 수준 100 직원에게 수준 200 직원과 동일한 제목인 "선임 동료"를 제공하기로 결정했다고 가정해 보겠습니다. 개발자로서, 당신은 case 100:
레이블에 속하는 첫 번째 스위치 섹션을 제거하여 구현하기로 결정하고, 대신 case 100:
과 case 200:
레이블이 동일한 스위치 섹션을 실행할 수 있도록 허용합니다.
할당된
employeeLevel
값을 수정하려면 다음과 같이 코드를 업데이트합니다.int employeeLevel = 100;
첫 번째 스위치 섹션에 여러 레이블을 할당하려면 다음과 같이 코드를 업데이트합니다.
case 100: case 200: title = "Senior Associate"; break;
변경이 완료되면 수정 내용이 다음 코드와 일치해야 합니다.
int employeeLevel = 100; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run
을 입력하여 코드를 실행합니다.다음과 같은 출력이 표시됩니다.
John Smith, Senior Associate
케이스 레이블
100
와200
둘 다 이제 제목을 문자열 값Senior Associate
로 설정하는 스위치 섹션과 연결되어 있습니다.
요약
switch 문에 대해 배운 주요 내용은 다음과 같습니다.
- 가능한 여러 일치 항목을 가진 하나의 값을 처리할 때, 각 일치 항목에 코드 논리의 분기가 필요하다면
switch
문을 사용하세요. - 코드 논리를 포함하는 단일 스위치 섹션은 키워드로 정의된
case
하나 이상의 레이블을 사용하여 일치시킬 수 있습니다. - 선택적
default
키워드를 사용하여 다른 조건 레이블이 일치하지 않을 때 사용할 레이블과 switch 섹션을 만듭니다.