개발단에 가입하여 베르의 게임 개발 유튜브를 후원해주세요!
안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다!
이번에는 C#의 enum에 대해서 알아봅시다.
타임라인
0:00 인트로
0:40 enum을 사용하지 않을 때
1:55 열거형 enum
3:30 아웃트로
[참고자료]
마이크로소프트 C# 공식 도큐먼트 - https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/enum
예제로 배우는 C# 프로그래밍 - https://www.csharpstudy.com/CSharp/CSharp-enum.aspx
[예제]
https://drive.google.com/file/d/1E1MBAEJVS3iQ8u8OMT-_Z3BZv2SZ9j5E/view?usp=sharing
스크립트
인트로
안녕하세요. 여러분들과 함께 게임 개발을 공부하는 베르입니다.
이번에는 C#의 enum에 대해서 알아보도록 하겠습니다.
보통 인간은 문자와 기호 그리고 숫자를 이용하지만 컴퓨터는 모든 것을 0과 1로 된 숫자로 받아들입니다.
그렇기 때문에 인간이 알아보기 쉽게 문자열로 만들면 프로그램이 느려지고 컴퓨터가 알아보기 쉽게 숫자로 만들면 인간이 알아보기 어려워집니다.
이것을 해결하기 위한 방법의 하나가 바로 enum, 즉 열거형입니다.
열거형에 대해서 알아보기 위해서 먼저 비주얼 스튜디오를 실행하고 빈 C# 프로젝트를 생성해줍니다.
enum을 사용하지 않을 때
먼저 enum을 사용하지 않고 프로그램을 만들 때는 어떻게 되는지 알아봅시다.
프로그램은 아주 간단한 형태라고 해도 여러 가지의 상태나 타입을 가지게 되는 경우가 많습니다.
지금은 간단한 예시로 두 개의 숫자와 계산 타입을 받아서 결과 값을 돌려주는 함수를 만들어보겠습니다.
물론 실제 프로그래밍에서는 이렇게 Calculate 함수 하나만 만들고 타입에 따라서 계산 결과를 돌려주는 것보다는 각 계산 방식에 따라서 함수를 따로 만드는 방식을 채택하겠지만 지금은 예시를 보여드리기 위함이니 이렇게 만들도록 하겠습니다.
먼저 계산 타입을 int 형으로 받는 방식은 이렇게 구현됩니다.
이런 int 타입으로 구현 된 방식의 경우에는 각 숫자가 어떤 계산 타입을 말하는 것인지 알기 어려운 문제가 있음을 한 눈에 알 수 있습니다.
그래서 어떤 숫자가 어떤 계산 방식을 뜻하는지 함수 사용자에게 알리기 위해서는 많은 양의 주석을 달 수 밖에 없습니다.
그 다음 방법은 타입을 문자열로 받는 방식입니다.
이렇게 문자열로 타입을 받게 되면 사람이 코드를 읽기는 쉬워지지만, int 타입과 마찬가지로 어떤 문자열이 어떤 타입을 나타내는지 추가로 주석을 달아서 알려줘야 하며, 더 큰 문제는 타입을 입력할 때 오타가 발생할 수 있다는 점입니다.
열거형 enum
이렇게 타입이나 상태를 정의할 때 int나 string을 사용하면 발생하는 문제들을 살펴보았습니다.
이번에는 이 영상의 주제인 enum으로 계산 타입을 만들어보겠습니다.
enum을 만들 때는 이렇게 해당 열거형의 이름을 적고 중괄호 안에 각 타입의 이름을 적어주면 됩니다.
이 때 이름은 문자열로 적듯이 원하는 이름을 자유롭게 적어주면 됩니다.
그리고 이렇게 선언된 열거형 키워드들은 각각 하나의 정수에 대응되는데 추가로 값을 대응시켜주지 않으면 배열처럼 0부터 차례대로 숫자가 매겨집니다.
이렇게 각 키워드마다 배열처럼 숫자가 매겨지는 점을 이용해서 enum을 int 타입으로 바꿔서 배열에 접근하는 방식으로 사용할 수 있습니다.
물론 반대로 int 타입을 enum 형식으로 바꿀 수도 있습니다.
그리고 키워드들이 다른 값을 가지기를 원하면 이런 식으로 대입시켜주면 되고 대입해준 키워드부터는 대입해준 값을 기반으로 숫자가 올라갑니다.
추가로 이렇게 키워드에 값을 대입해주는 방식을 이용하면 서로 다른 키워드가 같은 값을 가지게 만들 수도 있습니다.
이렇게 만든 enum 타입으로 다시 Calculate 함수를 만들어보면 이런 방식으로 구현됩니다.
앞에서 int나 string으로 만든 함수와 별 차이는 없어보이지만, 실제로 사용했을 때는 별도의 주석이나 설명없이도 어떤 계산 타입이 존재하며 어떤 값을 넣어줘야 하는지 명확하게 알 수 있습니다.
이런 방식 외에도 아래의 참고자료 링크를 보시면 Flags 어트리뷰트를 이용해 비트 연산을 하는 응용법도 있습니다.
비트연산과 관련된 내용은 지금 영상 오른쪽 상단에 표시되는 영상 링크를 통해서 보실 수 있습니다.
아웃트로
이번 영상에서는 C#의 enum에 대해서 알아보았습니다.
이 강좌는 시청자 여러분들의 시청과 후원으로 제작되었습니다.
이상 베르의 게임 개발 유튜브였습니다. 감사합니다.
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
[투네이션]
[Patreon]
[디스코드 채널]
'C#' 카테고리의 다른 글
[C#] List (0) | 2022.02.22 |
---|---|
[C#] foreach - 배열과 컬렉션를 위한 반복문 (0) | 2019.10.27 |
[C#] Thread - 스레드 생성 시 반복문의 인덱스를 매개변수로 받을 때 (0) | 2019.10.25 |
[C#] Thread - 여러 작업을 동시 처리하기 (2) | 2019.10.25 |
[C#] static - 정적 변수와 정적 함수 그리고 정적 클래스 (0) | 2019.09.18 |