C#
C# enum 및 enum Array(배열) 변환
sheepone
2021. 7. 1. 10:32
반응형
상수 숫자를 의미있는 단어로 표현할때 사용
별도의 지정 없을때는 첫번째 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 ;
}
}
}
반응형