>백엔드 개발 >C++ >여러 열거형 값이 C#에서 동일한 기본 값을 공유할 수 있나요?

여러 열거형 값이 C#에서 동일한 기본 값을 공유할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-30 17:24:11149검색

Can Multiple Enum Values Share the Same Underlying Value in C#?

고유하지 않은 열거형 값의 미스터리 공개

EDI 파일에서 인덱스 위치를 난독화하려고 시도하던 중 놀라운 발견이 이루어졌습니다. 동일한 열거형에 여러 값을 할당하는 기능. 겉보기에 이상해 보이는 이 동작은 그 뒤에 있는 논리와 잠재적인 의미에 대한 의문을 불러일으켰습니다.

Enum은 본질적으로 System.Enum에서 상속되는 구조체입니다. 뒤에서 열거형 값은 상수로 정의됩니다. 예를 들어, 다음 열거형 정의:

public enum Color
{
    Red = 1,
    Blue = 1,
    Green = 1
}

는 다음 의사 코드와 사실상 동일합니다.

public struct Color : System.Enum
{
    public const int Red = 1;
    public const int Blue = 1;
    public const int Green = 1;
}

이것은 열거형이 본질적으로 동일한 상수의 모음임을 나타냅니다. 기본 가치. C#에서는 명시적 기본 클래스를 사용하여 구조체를 정의하는 것이 금지되어 있지만 이것이 바로 열거형 정의로 해석됩니다.

결과적으로 동일한 값을 가진 여러 상수가 있어도 본질적인 충돌이 발생하지 않습니다. 열거형. 그러나 이는 열거형으로 변환할 때 모호함을 초래할 수 있습니다. 예:

Color color1 = (Color)1; // Returns Red
Color color2 = (Color)Enum.Parse(typeof(Color), "1"); // Also returns Red

color1과 color2에 모두 할당된 값은 기술적으로 Red가 아니라 1입니다. 그러나 인쇄하면 Red로 나타납니다.

또한 고유하지 않은 열거형을 비교하면 값을 사용하면 수수께끼 같은 결과가 나올 수 있습니다.

bool b = Color.Red == Color.Green; // True (Red is Green??)

비교가 논리적으로 올바르지 않은 것처럼 보일 수도 있지만 이는 기본 원칙에 따른 결과입니다. 값은 동일합니다.

결국 고유하지 않은 열거형 값을 사용하는 것은 판단의 문제입니다. 이 접근 방식을 활용하기 전에 위험과 이점을 신중하게 평가하는 것이 중요합니다.

위 내용은 여러 열거형 값이 C#에서 동일한 기본 값을 공유할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.