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 ;           
        }
    }
}

 

반응형