Machineboy空

C# 열거형 Enum 본문

언어/C#

C# 열거형 Enum

안녕도라 2025. 2. 10. 11:51

상수와 변수

변수 상수
담고 있는 데이터를 얼마든지 변경할 수 있는 메모리 공간 담긴 데이터를 절대 바꿀 수 없는 메모리 공간

 

값을 바꾸지 말아야 할 변수를 건드리는 실수를 할 수도 있기 때문에 상수를 선언한다.

컴파일러가 소스 코드를 컴파일할 때, 프로그래머의 실수를 잡아 알려주고, 결국 프로그램 버그도 줄여준다.


열거형 : 여러 개의 상수

  • a fixed set of named constants(an enumeration)
  • type-safe way of interacting with numeric constants, limiting the available values to a pre-defined set.

종류는 같지만 다른 값을 갖는 상수를 선언해야 할 때 열거형을 사용한다.


열거형  값 할당

열거형의 값을 지정하지 않은 경우, 컴파일러가 0부터 차례로 정수를 할당하는데

이는 열거 형식의 각 요소가 어떤 값인지 보다, 서로 중복되지 않는 값을 가지게 하는 것이 더 중요하기 때문이다.

enum Season
{
    Spring,		// 0
    Summer,		// 1
    Autumn,		// 2
    Winter		// 3
}

 

열거형의 값을 지정할 수도 있다.

enum Answer
{
    Maybe = 1,
    Yes = 3,
    No = 5
}

예제

https://exercism.org/tracks/csharp/exercises/logs-logs-logs

 

Logs, Logs, Logs! in C# on Exercism

Can you solve Logs, Logs, Logs! in C#? Improve your C# skills with support from our world-class team of mentors.

exercism.org

 

using System;
using System.Collections.Generic;

enum LogLevel
{
    Unknown = 0,
    Trace = 1,
    Debug = 2,
    Info = 4,
    Warning = 5,
    Error = 6,
    Fatal = 42
}

static class LogLine
{
   public static LogLevel ParseLogLevel(string logLine)
{
    string code = logLine.Substring(1, 3); 

    switch(code)
    {
        case "TRC" :
            return LogLevel.Trace;
        case "DBG" :
            return LogLevel.Debug;
        case "INF" :
            return LogLevel.Info;
        case "WRN" :
            return LogLevel.Warning;
        case "ERR" :
            return LogLevel.Error;
        case "FTL" :
            return LogLevel.Fatal;
        default:
            return LogLevel.Unknown;
    }
}


    public static string OutputForShortLog(LogLevel logLevel, string message)
    {
        return $"{(int)logLevel}:{message}"; 
    }
}

'언어 > C#' 카테고리의 다른 글

Excercism - Yacht : LINQ 연습  (0) 2025.02.18
C# Attribute, Flag Enum  (0) 2025.02.13
C# IEnumerable과 lazy실행 , yield return  (0) 2025.02.07
C# Dictionary 딕셔너리  (0) 2025.02.06
C# 문자 형식 char, 문자열 형식 string, String Builder  (0) 2025.02.06