Machineboy空
C# 열거형 Enum 본문
상수와 변수
변수 | 상수 |
담고 있는 데이터를 얼마든지 변경할 수 있는 메모리 공간 | 담긴 데이터를 절대 바꿀 수 없는 메모리 공간 |
값을 바꾸지 말아야 할 변수를 건드리는 실수를 할 수도 있기 때문에 상수를 선언한다.
컴파일러가 소스 코드를 컴파일할 때, 프로그래머의 실수를 잡아 알려주고, 결국 프로그램 버그도 줄여준다.
열거형 : 여러 개의 상수
- 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 |