[C# 문법] C# Enum(열거형) 제너릭 메서드 사용 방법


안녕하세요.

 

오늘은 C# 문법에서 Enum을 제너릭 메서드로 생성하여 사용하는 방법에 대해서 알려드리려고 합니다.

 

회사에서 소스코드를 작성하다가 Enum을 여러 개 선언하여 코드를 작성하였는데요. 다시 소스코드를 들여다 보니까 Enum 형태만 다르고 나머지 내부 로직은 동일한 소스라서 중복되는 것을 알게 되었습니다.

 

그래서 이 부분을 어떻게 하나의 메서드로 바꿀 순 없을까 하다가 Enum 또한 제너릭 메서드로 만들어서 사용할 수 있다는 것을 알게 되었습니다.


 

우선 아래 두 개의 Enum을 만들고 Enum을 반목문으로 돌려서 출력해 보도록 할게요.

 

Enum 반복문 예제 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace Generic

{

    class Program

    {

        public enum FRUIT { APPLE, MELON, WATERMELON, BANANA, PEACH };

        public enum COLOR { RED, BLACK, BLUE, GREEN, YELLOW };

        static void Main(string[] args)

        {

            //enum 반복문으로 출력

            foreach (FRUIT item in Enum.GetValues(typeof(FRUIT)))

            {

                Console.WriteLine("item : {0}", item.ToString());

            }

 

            Console.WriteLine("--------------------------------");

 

            //enum 반복문으로 출력

            foreach (COLOR item in Enum.GetValues(typeof(COLOR)))

            {

                Console.WriteLine("item : {0}", item.ToString());

            }

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과



 

위와 같이 반복문을 이용해서 enum문을 출력했는데요.

 

위에서 예제코드를 보시게 되면 foreach문이 내부 enum 타입만 다르지 내부 로직은 같은 경우인데 2번이나 반복돼서 사용된 것을 보실 수 있습니다.

 

물론 잘못 되었다는 것은 아니지만..그래도 같은 로직이 여러 번 반복되면 코드도 길어지고 가독성도 떨어지고 해서 그냥 메서드로 생성해서 사용하는게 좋지 않을까 생각하여 저는 저 부분을 메서드로 만들려고 합니다.

 

enum문 제너릭 메서드 생성 예제코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace Generic

{

    class Program

    {

        public enum FRUIT { APPLE, MELON, WATERMELON, BANANA, PEACH };

        public enum COLOR { RED, BLACK, BLUE, GREEN, YELLOW };

        static void Main(string[] args)

        {

            SetEnumData<FRUIT>();

 

            Console.WriteLine("--------------------------------");

 

            SetEnumData<COLOR>();

        }

 

        public static void SetEnumData<TEnum>()

        {

            //Enum 타입 받아온다.

            Type enumType = typeof(TEnum);

 

            //enum 반복문으로 출력

            foreach (Enum item in Enum.GetValues(enumType))

            {

                Console.WriteLine("item : {0}", item.ToString());

            }

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과



 

이처럼, enum 반목문을 제너릭 메서드로 만들어서 Main문에서 호출만 하면 이전 보다 훨신 코드도 간결해지면서, 실제 프로젝트에서는 하나의 메서드만 있는 경우라서 향후에 유지보수도 쉽고 코드 가독성도 좋아지지 않을까 생각합니다.

 

이렇게 오늘은 enum 구문을 제너릭 메서드로 만드는 방법에 대해서 알아보았습니다!^^

 

글 읽어 주셔서 감사합니다.


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY