반응형
상수 숫자를 의미있는 단어로 표현할때 사용
별도의 지정 없을때는 첫번째 0 이후 1씩 증가
using System;
namespace ConsoleApp11
{
class Program
{
enum ei //error id
{
Emergency ,
DoorCheck ,
MotorAlarm ,
CylinderAlarm,
}
static void Main(string[] args)
{
Console.WriteLine((int)ei.Emergency ); //output 0
Console.WriteLine((int)ei.DoorCheck ); //output 1
Console.WriteLine((int)ei.MotorAlarm ); //output 2
Console.WriteLine((int)ei.CylinderAlarm); //output 3
Console.ReadLine();
}
}
}
[Flags] 선택의 조합으로 사용할때
선행 숫자 구분기보 기능은 C# 7.2 이상 필요
using System;
namespace ConsoleApp11
{
class Program
{
[Flags]
enum ei //error id
{
Normal = 0, //0b_0000_0000, // 0
Emergency = 1, //0b_0000_0001, // 1
DoorCheck = 2, //0b_0000_0010, // 2
MotorAlarm = 4, //0b_0000_0100, // 4
CylinderAlarm= 8 //0b_0000_1000, // 8
}
static void Main(string[] args)
{
ei eiError = ei.Emergency | ei.MotorAlarm ; //두개 에러가 동시에 발생
Console.WriteLine(eiError); //output Emergency, MotorAlarm
Console.WriteLine((int)eiError); //output 5
var a = (ei)3 ; //0011
Console.WriteLine(a); //output Emergency, DoorCheck
Console.ReadLine();
}
}
}
enum Array 변환
enum을 배열로 변환하여 Enum 복사 가능
using System;
namespace ConsoleApp11
{
class Program
{
//[Flags]
enum ei //error id
{
Normal , //0b_0000_0000, // 0
Emergency , //0b_0000_0001, // 1
DoorCheck , //0b_0000_0010, // 2
MotorAlarm , //0b_0000_0100, // 4
CylinderAlarm //0b_0000_1000, // 8
}
static void Main(string[] args)
{
Array array = EnumToArray(new ei());
//foreach(var arr in array) Console.WriteLine(arr.ToString());
for(int i=0; i<array.Length; i++)
{
Console.WriteLine(array.GetValue(i).ToString());
//output
//Normal
//Emergency
//DoorCheck
//MotorAlarm
//CylinderAlarm
}
Console.ReadLine();
}
static Array EnumToArray(Enum _enum)
{
Type type1 = _enum.GetType();
Array array1 = Enum.GetValues(type1);
return array1 ;
}
}
}
반응형
'C#' 카테고리의 다른 글
C# 배열 초기화, 구조체 초기화 (0) | 2021.12.16 |
---|---|
C# OpenFileDialog (파일 불러오기, 파일 열기) (0) | 2021.07.12 |
C# Queue 자료구조 (feat Thread-safe한 ConcurrentQueue) (0) | 2021.06.30 |
2021년 6월 29일 프로그래밍 언어 순위 및 비교 (0) | 2021.06.29 |
C# Thread (Process RealTime 및 우선순위) (0) | 2021.06.29 |