안녕하세요. 애드라이프 입니다.
이전 포스팅에서 object형식과 데이터 형식 변환에
대해서 같이 공부해 보았습니다.
이번 시간에는 지금까지의 배운 변수의 개념과는 좀 다른
상수에 대해 알아보고 열거형식에 대해서도 다룰 예정입니다.
시작전에 이전 포스팅내용이 궁금하신분들은 아래 링크를 참고해주세요.
먼저 상수에 대한 개념부터 시작하겠습니다.
우선 이전 부터 계속 다뤘던 변수는 말그대로 변화하는
것을 일컷는 말입니다. 상수는 그 반대의 이미이죠.
상수는 절대 변하지 않는 데이터 형식을 말합니다.
상수 기본구조 : const int a = 1; 변수와 다른점은 앞에 const라는 단어가 붙었다는 정도입니다. 구조상으론 그렇지만 프로그램에서는 상수의 변경을 허락하지 않습니다.
그럼 굳이 상수라는 개념을 왜 만들었을까? 프로그램을 몇 천줄 이상 제작해본 경험이 있는 위와 같은 의문을 품지 않았을 겁니다. 왜냐하면 단순이 몇 십 몇백줄의 프로그램을 제작할 경우에는 충분히 기억하고 있었을 변수들이 몇 천줄이 넘어가면 머리로 기억하기는 한개가 있죠.
분명히 변수를 선언하면서 "이 변수는 변경하지 않고 상수처럼 써야지" 해놓고 몇 천줄 뒤에서 그 사실을 까먹고 바꿔버리는 오류를 범하게 되는것이죠. 이런 오류를 방지하기 위해 필요한 개념이라 생각하시면 됩니다. 미리미리 상수로 선언해서 뒤에서 까먹고 실수로 바꾸려 해도 컴파일러에게 혼꾸녕나고 그 사실을 깨닫게 되는 것이죠!! |
간단하게 어떤 결과가 나오지는 프로그램으로 확인해 볼까요?
위 프로그램에서 보는것 처럼 빌드를 실행하면
컴파일러가 잔소리를 합니다. 상수를 왜!! 바꾸냐!!
그럴꺼면 변수로 지정해라!!
이런식으로 말이죠....
이번에는 열거 형식 개념에 대해서 알아보겠습니다.
열거형식 상수를 열거해놓은 방식을 뜻합니다. 기본구조 : enum 열거 형식명 {상수1, 상수2, 상수3 .....} 본래는 좀더 상세구조가 있으나 지금은 이 구조만 알아도 충분히 활용가능하기 때문에...필자도 거의 기본구조만으로 충분..
열거형식이라는 개념은 왜 생겼을까? 음... 이전 포스팅에서 다뤘던 논리 데이터 형식을 기억하시나요? 0과 1을 거짖과 참인 false와 true로 나타냈었고 0과 1로 프로그램을 제작했을때보다 false와 true로 제작했을때가 가독성면에서 훨신 좋은것을 언급했었죠.
열거 형식도 같습니다. 단순히 겹치치 않는 상수를 특정명에 대입하는 개념일뿐이죠. 예로 콜라, 사이다, 오렌지 주스, 알로에 주스, 커피가 순서대로 진열되어있는 자판기를 보겠습니다.
이를 열거 형식으로 구성해보면 enum VendingMachine{ Coke, Sprite, orange juice, plum juice, McCall } 이런식으로 구성이 되겠죠? 그럼 특별히 지정한 값이 없는한 enum은 선언된 순서대로 0부터 차례로 순번을 매깁니다. Coke = 0 이렇게 말이죠.
이를 활용해서 조건문을 만들어보면(a를 누른버튼의 값으로 가정) if(a==0) 이 조건이 참이면 콜라가 나오면 되는 내용이지만 프로그램 해석시 a == 0이랑 같다라는게 무엇을 나타내는지 금방 알 수 없겠죠? 하지만 열거 형식에서 지정한 값을 대입해서 if(a==Coke)라는 조건문을 써놓은 당연히 콜라가 나오겠지라고 바로 유추가 가능하기 때문에 가독성이 매우 좋아집니다.
지금은 단순히 간략한 프로그램을 다루는 수준이므로 그다지 실용적인지 잘 모르시겠지만 복잡한 프로그램 개발을 할 수있는 수준이 되면 이 이런 개념들에 대한 인식이 달라질 겁니다. |
using static System.Console;
namespace DataFormat_enum
{
class Program
{
enum VendingMachine //특별히 지정한 숫자가 없다면 0~ 차례로 순번을 매김
{
Coke,
Sprite,
OrangeJuice,
PlumJuice,
McCall
}
enum VendingMachine2 //숫자를 지정하면 지정한 숫자부터 차례로 순번을 매김
{
Coke=10,
Sprite,
OrangeJuice,
PlumJuice=20,
McCall
}
static void Main(string[] args)
{
WriteLine((int)VendingMachine.Coke);
WriteLine((int)VendingMachine.Sprite);
WriteLine((int)VendingMachine.OrangeJuice);
WriteLine((int)VendingMachine.PlumJuice);
WriteLine((int)VendingMachine.McCall);
VendingMachine Beverage = VendingMachine.OrangeJuice; //위에서 선언한 enum은 열거형식입니다. 따라서 열거형식으로 선언한 변수가 됩니다. 담을수 있는건 VendingMachine에서 선언한것들 뿐이지만요.
WriteLine(Beverage == VendingMachine.OrangeJuice); //비교문 사용가능
WriteLine(Beverage == VendingMachine.Coke);
WriteLine((int)VendingMachine2.Coke);
WriteLine((int)VendingMachine2.Sprite);
WriteLine((int)VendingMachine2.OrangeJuice);
WriteLine((int)VendingMachine2.PlumJuice);
WriteLine((int)VendingMachine2.McCall);
}
}
}
프로그램에는 enum(열거형식)의 특징을 잘 설명해 놓았습니다.
특별히 지정한 숫자가 없다면 0부터 차례로 순번을 매기고
열거형식으로 선언된 부분은 변수 처럼 쓸 수있으며
숫자를 저정한다면 지정한 숫자부터 순분을 매깁니다.
결과를 함께보면 더 이해하기 편하실 듯 합니다.
프로젝트 생성과 실행하는 방법이 궁금하신 분들은 아래 링크를 참고해주세요.
C# 프로그램 시작하기 - 간단한 콘솔 프로젝트 만들기 #2 <- 링크
지금까지 변하지 않는 상수와
그 상수의 열거형인 enum에 대해서 배웠습니다.
포스팅을 보시면서 궁금하신점은 댓글로 남겨주세요.
다음에는 더욱 유익한 포스팅으로 돌아오겠습니다.
by 애드라이프
'C# 프로그래밍 > 기초 다지기' 카테고리의 다른 글
C# 프로그램 시작하기 - 문자열 파헤치기 #4 (0) | 2020.04.10 |
---|---|
C# 프로그램 시작하기 - 데이터 형식 익히기 #3-5 (0) | 2020.04.09 |
C# 프로그램 시작하기 - 데이터 형식 익히기 #3-3 (0) | 2020.04.07 |
C# 프로그램 시작하기 - 데이터 형식 익히기 #3-2 (0) | 2020.04.06 |
C# 프로그램 시작하기 - 데이터 형식 익히기 #3-1 (0) | 2020.04.04 |