질문:
C#에서 컴파일러가 여러 열거형 할당을 허용하는 이유는 무엇입니까? 같은 값으로? 이러한 경우 대신 구조체를 사용하는 것이 좋습니까?
답변:
C#의 열거형은 본질적으로 System.Enum 기본 클래스에서 상속되는 구조체입니다. 뒤에서 열거형 값은 구조체 내의 상수로 정의됩니다. 예를 들어 다음 열거형 정의는
public enum Color { Red = 1, Blue = 1, Green = 1 }
다음 의사 C# 코드와 동일합니다.
public struct Color : System.Enum { public const int Red = 1; public const int Blue = 1; public const int Green = 1; }
동일한 값을 가진 여러 상수가 포함된 유형에는 문제가 없기 때문입니다. , 고유하지 않은 값으로 열거형을 정의하는 것이 허용됩니다. 그러나 다음과 같은 몇 가지 주의 사항이 있습니다.
고유하지 않은 열거형 값을 사용하는 것은 기술적으로 합법적입니다. , 일반적으로 권장되지 않습니다. 대신 고유한 값을 가진 명시적 멤버를 정의할 수 있는 구조체를 사용하는 것이 좋습니다. 그러나 구조체는 열거형에 비해 메모리 오버헤드가 더 높을 수 있으므로 요구 사항에 따라 신중하게 사용하십시오.
위 내용은 C#에서 고유하지 않은 열거형 값을 허용하는 이유는 무엇이며 대신 구조체를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!