namespace System
{
public abstract class Enum : ValueType
}
즉, 모든 enum 타입의 부모 클래스이다.
C#에서 열거형(enum)을 만들면 자동으로 System.Enum을 상속받는다.
public enum ItemCategory
{
Kitchen,
Interior,
Exterior
}
→ 이 타입은 내부적으로 System.Enum을 기반으로 만들어진 값 형식이다.
즉,
ItemCategory myCategory = ItemCategory.Kitchen;
System.Enum e = myCategory;
| 개념 | 설명 |
|---|---|
System.Enum | 모든 enum 타입의 부모 타입 (abstract class) |
| 역할 | enum을 일반화된 방식으로 다루기 위해 사용 |
| 쓰임새 | 다양한 enum을 하나의 타입으로 받아서 다형적으로 사용하고 싶을 때 |
이 줄은 추상 클래스에서:
public virtual System.Enum SubCategory => null;
이건 "이 아이템이 속한 하위 카테고리를 리턴하게 하고 싶다, 그런데 그 하위 카테고리는 아이템마다 enum이 다를 수도 있으니까, 그냥 Enum 타입으로 뭉뚱그리자"는 전략이다.
예시 시나리오
public enum KitchenSubCategory { Stove, Sink, Refrigerator }
public enum InteriorSubCategory { Table, Chair, Lamp }
public class KitchenItemData : ItemData
{
public KitchenSubCategory subCategory;
public override ItemCategory Category => ItemCategory.Kitchen;
public override System.Enum SubCategory => subCategory;
}
public class InteriorItemData : ItemData
{
public InteriorSubCategory subCategory;
public override ItemCategory Category => ItemCategory.Interior;
public override System.Enum SubCategory => subCategory;
}
이러면 서브카테고리 enum 타입이 다 다르지만,
부모 클래스에서는 공통적으로 Enum 타입으로 처리할 수 있다!