1. 열거형 형식
1.1 열거형 형식
열거형은 정수형 상수에 이름을 붙여서 소스에서 이해하기 쉽도록 해 줍니다
사용방법은 enum 키워드를 사용하여 정의합니다.
사용 방법 |
enum 열거형-이름 { 열거자1 = 초기값, 열거자2 ... }; // ① 열거형 데이터 형식 정의 ... 열거형-이름 열거형-변수-이름 = 열거형-이름.열거자; // ② 열거형 변수 선언 ... int 정수-변수-이름 = (int) 열거형-변수-이름; // ③ 활용 |
열거자1의 초기값은 생략 가능합니다. 초기값을 생략하면 0으로 할당됩니다.
앞의 초기값이 할당되고, 다음 값이 할당되지 않을 경우 앞의 값이 +1의 값이 할당됩니다.
그리고, 각 열거자 별로 초기값을 할당할 수 있지만, 앞에 할당된 값보다 커야 합니다.
열거형 요소의 기본적인 기본 형식은 int입니다.
byte와 같은 다른 정수 형식의 열거형을 선언하려면 콜론(:)을 사용한 뒤 byte를 사용하면 됩니다.
예제 : byte 열거형 |
enum Day : byte {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; |
열거형 데이터 형식은 정수형 데이터 형식과 호환가능합니다.
이때 사용하는 것이 명시적 형변환(캐스트, Casts)입니다.
그냥 변수 이름 앞에 (열거형 이름)과 (int)를 넣어 주면 됩니다.
예제 : 열거형 형 변환 |
int 정수형-변수-이름 = (int) 열거형-변수-이름; 열거형-데이터-형식 열거형-변수-이름 = (열거형-데이터-형식)정수형-변수-이름; |
1.2 ToString & Format 메서드
enum은 열거자들은 ToString과 Foramt 메서드를 사용하여 문자열로 변환이 가능합니다.
사용 방법 |
열거자.ToString(); ...Format("... {인덱스}...", 열가자); |
using UnityEngine;
public class EnumExample : MonoBehaviour
{
enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; // ① 열거형 데이터 형식 정의
enum Month : byte { Jan = 1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; // ① 열거형 데이터 형식 정의
void Start()
{
Day today = Day.Monday; // ② 열거형 변수 선언
int dayNumber = (int)today; // ③ 활용
Debug.LogFormat("{0} is day number {1}.", today, dayNumber);
// 출력 : Monday is day number 1
Month thisMonth = Month.Dec; // ② 열거형 변수 선언
byte monthNumber = (byte)thisMonth; // ③ 활용
Debug.LogFormat("{0} is month number #{1}.", thisMonth, monthNumber);
// 출력 : Dec is month number 12
}
}
2. 플래그(Flags) enum
enum의 각 열거자를 비트 값(예: 1, 2, 4, 8, ...)으로 구성하는 것입니다.
그리고, 열거자끼리 비트연산(AND, OR, NOT, XOR)를 사용하여 값의 조합을 할 수 있습니다.
OR 연산자를 이용해서 한 enum 변수에 다중값을 가질 수 있으며,
AND 연산자를 이용하여 enum 변수가 특정 멤버를 포함하고 있는지 체크할 수 있다.
Flags enum을 사용하기 위해서 using syusing System; 선언하여야 합니다.
사용 방법은 enum 선언 위에 [Flags] 속성을 넣어 주면 됩니다.
사용 방법 |
using System; [Flags] enum 열거형-이름 { 열거자1 = 초기값, 열거자2 ... }; |
using UnityEngine;
using System;
public class FlagsEnueExample : MonoBehaviour
{
[Flags]
enum Days
{
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32
}
void Start()
{
Days workingDay = Days.Monday | Days.Tuesday | Days.Wednesday | Days.Thursday | Days.Friday;
Debug.LogFormat($"Working Days are {workingDay}");
// 출력 : Working Days are Monday, Tuesday, Wednesday, Thursday, Friday
}
}
'프로그램 > 유니티 C# 강좌' 카테고리의 다른 글
[유니티 C# 강좌] 7. 연산자(Operator) (2) | 2019.11.12 |
---|---|
[유니티 C# 강좌] 6. 형 변환(Type Conversions) (0) | 2019.11.12 |
[유니티 C# 강좌] 4. 문자열(String) (1) | 2019.10.27 |
[유니티 C# 강좌] 3. 배열(Array) (0) | 2019.10.26 |
[유니티 C# 강좌] 2. 데이터 형식(Data Type), 변수(Variable), 상수(Constant) (2) | 2019.10.26 |