[C#] switch 제어문

2021. 7. 16. 00:00·etc/C#

switch 제어문은 거의 모든 프로그래밍 언어에 들어있는 기초적인 제어문이다.

 

우리의 특별한 C#은 switch제어문에서 조금 더 특별한 기능을 제공한다.

 

switch 제어문의 원형

int num = 1;
switch(num)
{
	case 1:
    	Console.WriteLine("One");
        break;
    case 2:
    	Console.WriteLine("Two");
        break;
    case 3:
    case 4:
    	Console.WriteLine("Three or Four");
        break;
    default:
    	Console.WriteLine("Out Of Range");
        break;
}
One

이때 switch의 조건식으로는 모든 데이터 타입이 올 수 있다. 

 

모든 객체의 조상인 object도 넣을 수 있다.

 

object num = 4;
switch (num)
{
	case 1:
		Console.WriteLine("One");
		break;
	case 2:
		Console.WriteLine("Two");
		break;
	case 3:
	case 4:
		Console.WriteLine("Three or Four");
		break;
	default:
		Console.WriteLine("Out Of Range");
		break;
}
Three or Four

 

좀 더 특별한 것은 데이터의 형식으로도 분기가 가능하다는 점이다.

 

bool condition = false;
object obj = null;
if(condition)
	obj = 4;
else
	obj = 4.5f;
switch (obj)
{
    case int i:
    	Console.WriteLine($"{i} is int");
    	break;
    case float f:
    	Console.WriteLine($"{f} is float");
    	break;
    default:
    	Console.WriteLine("Out Of Range");
    	break;
}
4.5 is float

이때 주의할 점은 int i 처럼 데이터 형식 오른쪽에 식별자를 반드시 붙여줘야 한다.

 

마지막으로 case문에서도 when절을 이용해 분기 할 수 있는 예제를 보자.

 

bool condition = false;
object obj = null;
if(condition)
	obj = 4;
else
	obj = 4.5f;
switch (obj)
{
    case int i:
    	Console.WriteLine($"{i} is int");
    	break;
    case float f when f >= 0f:
    	Console.WriteLine($"{f} is positive float");
    	break;
    case float f:
    	Console.WriteLine($"{f} is negative float");
    	break;
    default:
    	Console.WriteLine("Out Of Range");
    	break;
}
4.5 is positive float

 

저작자표시 (새창열림)

'etc > C#' 카테고리의 다른 글

[C#] Lambda Function Capture  (1) 2021.07.30
[C#] 문자열 보간(Interpolation)  (0) 2021.07.15
[C#] Property(프로퍼티), C#만의 특별한 기능  (0) 2021.07.13
[C#] Null-Safety를 지원하는 C#  (0) 2021.07.13
[C#] Lambda Expression(람다 식) 이란?  (0) 2021.07.12
'etc/C#' 카테고리의 다른 글
  • [C#] Lambda Function Capture
  • [C#] 문자열 보간(Interpolation)
  • [C#] Property(프로퍼티), C#만의 특별한 기능
  • [C#] Null-Safety를 지원하는 C#
imsongkk
imsongkk
이것저것 적어보는 개발 블로그
  • imsongkk
    이것저것
    imsongkk
  • 전체
    오늘
    어제
    • 분류 전체보기 (81)
      • 일상 (1)
      • Infra (21)
        • AWS (3)
        • Docker (8)
        • Kubernetes (9)
        • Terraform (1)
      • Trouble Shooting (9)
      • Back-End (18)
        • Spring Boot (2)
        • JPA (7)
        • HTTP 기본 (4)
        • DDD (3)
      • 소마 (4)
      • Programming (7)
        • 디자인 패턴 (7)
      • etc (19)
        • Unity (4)
        • Node.js (2)
        • React (1)
        • 리액트를 다루는 기술 (2)
        • C# (6)
        • Language (0)
        • Firebase (2)
        • 알고리즘 (1)
        • CS (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    도메인
    Google Analytics
    Pull
    3000
    Private
    firestore
    React
    Git
    포트
    소프트웨어 마에스트로 #소마 #SWM #소프트웨어 마에스트로 14기
    Push
    EC2
    Firebase Analytics
    Firebase
    clone
    Terraform #테라폼 #IaC #AWS CLI
    8080
    VPC #Subnet #NAT #Region #AZ #IGW
    Repository
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
imsongkk
[C#] switch 제어문
상단으로

티스토리툴바