• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

case (int)Choice.Scissors 이 부분에 대해서..

21.04.29 02:30 작성 조회수 100

0

안녕하세요. 이제 막 처음 C#을 배우기 시작했습니다. 어떻게 시작해야 할 지 갑갑했는데, 좋은 강의 만들어 주셔서 감사드립니다.

강의를 보다가 궁금한 부분이 생겨서 질문을 드립니다.

앞서 const를 써서 만들 때는, 변수만으로는 case 뒤에

참조로 넣을 수 없어서 상수인자인 const를 쓰셨다고 하셨는데

나중에 enum을 쓸때는 앞에 변수 int를 쓰고 있는 점이 의문이 가서요.

제가 아직 문법에 대한 기초도 제대로 다지기 전이라 이해가 부족해서^^); 혹시 int를 저렇게 써도 괜찮은 이유를 알려주실 수 있을까요?

답변 1

답변을 작성해보세요.

2

enum도 내부적으로는 1, 2, 3과 같은 정수가 저장되어 있기는 하나,
C# 관점에서 보면 그 숫자가 일반 정수가 enum 타입입니다.
Choice.Scissors라는  enum 타입과 일반 정수를 비교하는 것은
당근과 호랑이를 비교하는 것처럼 서로 비교대상이 아닙니다.
따라서 저렇게 변환(캐스팅)을 통해서 enum을 일단 정수로 변환시켜줘야 합니다.

여담이지만 전체 시리즈가 아예 코딩을 하나도 모르고 시작하면 따라가기가 꽤 어렵습니다.
최초 제작 목적은 신입 프로그래머 교육용으로 만든거이기도 하고요.
따라서 시중에 있는 간단한 C# 입문 서적이랑 같이 보시길 추천 드립니다.

JB님의 프로필

JB

질문자

2021.04.29

답변 감사합니다. 제가 드린 질문이 핀트가 잘못되어 있었네요. 궁금했던 부분은,  enum을 쓰기 전에는 const를 써서 상수화 선언을 했는데 enum에서는 const를 쓸 필요가 없는건가 하는 부분이었습니다. 좀더 조사해 보니 애초에 enum 자체가 상수의 모음이었다고 나오네요. (혹시 틀렸다면 알려 주시면 감사하겠습니다)

그래도 enum 자체가 C#관점에서 어떻게 보이는지 일반 정수와 어떤 느낌으로 다른지 알게 되었습니다. 감사합니다 !