C# Enum(열거)(예제 포함)
⚡ 스마트 요약
C#의 열거형은 요일과 같은 상수 정수 집합을 정의하여 코드를 더 쉽게 읽고 유지 관리할 수 있도록 합니다. `enum` 키워드를 사용하면 이러한 고정 상수를 한 번만 선언하여 프로그램 전체에서 재사용할 수 있습니다.

C# 열거
열거형은 모든 프로그래밍 언어에서 상수 값 집합을 정의하는 데 사용됩니다. 예를 들어, 요일은 열거형으로 정의되어 프로그램의 어느 곳에서나 사용될 수 있습니다. C#에서는 열거형이 'enum' 키워드를 사용하여 정의됩니다.
'enum' 키워드를 사용하는 방법의 예를 살펴보겠습니다.
이 예에서는 요일을 저장하는 데 사용되는 days라는 열거형을 정의합니다. 각 예에서 Program.cs 파일의 기본 기능만 수정하겠습니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat}; static void Main(string[] args) { Console.Write(Days.Sun); Console.ReadKey(); } } }
Code 설명:-
- '열거' 데이터 형식 열거형을 선언하도록 지정되었습니다. 열거형의 이름은 Days입니다. 모든 요일이 열거형 값으로 지정됩니다.
- 마지막으로 console.write 함수는 열거형 값 중 하나를 표시하는 데 사용됩니다.
위 코드를 올바르게 입력하여 프로그램이 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.
출력:
출력에서 열거형의 'Sun' 값이 콘솔에 표시되는 것을 볼 수 있습니다.
C#에서 열거형(Enum)을 사용하는 이유는 무엇일까요?
열거형은 프로그램을 더 읽기 쉽고, 안전하며, 유지보수하기 쉽게 만들어 줍니다. 설명되지 않은 숫자(일명 매직 넘버)를 코드 곳곳에 흩뿌리는 대신, 열거형은 각 값에 그 용도를 명확하게 나타내는 설명적인 이름을 부여합니다.
- 가독성 : Days.Fri와 같은 이름은 숫자 5보다 훨씬 명확하기 때문에 코드를 읽는 사람은 누구나 그 의미를 즉시 이해할 수 있습니다.
- 유형 안전: 열거형으로 선언된 변수는 정의된 멤버 중 하나만 저장할 수 있으므로 유효하지 않은 값이 저장되는 것을 방지합니다.ping 인치
- 유지보수성: 관련 상수들은 한 곳에 저장되어 있으므로, 값을 추가하거나 이름을 변경하면 프로그램 전체가 일관되게 업데이트됩니다.
- 데이터 바인딩: WPF 및 ASP.NET과 같은 프레임워크는 열거형을 드롭다운 목록에 바인딩할 수 있으므로 열거형은 사용자 인터페이스를 구축하는 데 유용합니다.
컴파일러는 모든 할당을 허용된 멤버와 비교하여 검사하기 때문에 열거형은 프로그램 실행 전에 오류를 조기에 발견하는 데에도 도움이 됩니다.
C# 열거형에 사용자 지정 값 할당하기
C#에서는 기본적으로 첫 번째 열거형 멤버에 0을 할당하고 그 뒤를 잇는 각 멤버에 1씩 값을 더합니다. 위의 Days 열거형에서 Sun은 0, Mon은 1, Sat은 6입니다. 이러한 기본값을 재정의하려면 명시적으로 숫자를 할당할 수 있습니다.
- 명시적 값: enum Level {Low = 1, Medium = 5, High = 10}과 같이 작성하면 각 멤버가 기본 순서 대신 선택한 숫자로 설정됩니다.
- 부분 과제: 일부 멤버에만 값을 할당하면 컴파일러는 마지막으로 할당된 값부터 이후 멤버에 번호를 매깁니다.
- 기본 유형: 열거형은 기본적으로 멤버를 정수형으로 저장하지만, 메모리를 절약하거나 범위를 확장하기 위해 바이트, 쇼트 또는 롱을 기반으로 할 수도 있습니다.
사용자 지정 값은 숫자가 데이터베이스 코드나 프로토콜 상수와 같은 외부 시스템과 일치해야 할 때 유용하며, 이를 통해 열거형이 실제 데이터를 정확하게 반영할 수 있습니다.
C# 열거형을 정수, 문자열 및 플래그로 변환하는 방법
C#에서는 열거형 값을 숫자로 저장하거나 텍스트에서 읽어오는 등 다른 형식으로 변환해야 하는 경우가 많습니다. 이러한 변환은 몇 가지 표준적인 방법으로 이루어집니다.
- 열거형을 정수로 변환: (int)Days.Wed와 같은 명시적 형변환은 기본 정수 값을 반환하므로 저장이나 연산에 유용합니다.
- 정수를 열거형으로 변환: 반대 방향으로 캐스팅하면, 예를 들어 (Days)3과 같이 숫자가 해당 열거형 멤버로 다시 변환됩니다.
- 문자열을 열거형으로 변환: Enum.Parse와 더 안전한 Enum.TryParse는 "Fri"와 같은 이름을 유효하지 않은 텍스트에 대한 예외 없이 Days.Fri 멤버로 변환합니다.
- 열거형을 문자열로 변환: 멤버에 대해 ToString을 호출하면 해당 멤버의 이름이 반환되므로 Days.Sun.ToString()은 표시 또는 로깅을 위해 "Sun"을 반환합니다.
- 회원 목록: Enum.GetValues와 Enum.GetNames는 모든 값이나 이름을 반환하므로 메뉴를 채우거나 입력 유효성을 검사할 때 유용합니다.
열거형이 단일 선택이 아닌 여러 선택의 조합을 나타내야 하는 경우, `Flags` 속성을 적용하고 각 멤버에 1, 2, 4, 8과 같은 2의 거듭제곱 값을 부여합니다. 그런 다음 비트 OR 연산자를 사용하여 멤버들을 조합하고 `HasFlag` 메서드를 사용하여 특정 옵션이 있는지 확인할 수 있습니다.
이러한 변환 기법을 통해 열거형은 읽기 쉬운 이름, 저장된 숫자 및 결합된 플래그 세트 간에 깔끔하게 이동할 수 있습니다.ping 프로그램의 나머지 부분은 타입 안정성이 보장되고 이해하기 쉽습니다.


