> 백엔드 개발 > C++ > C#에서 고유하지 않은 열거형 값을 허용하는 이유는 무엇이며 대신 구조체를 사용해야 합니까?

C#에서 고유하지 않은 열거형 값을 허용하는 이유는 무엇이며 대신 구조체를 사용해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-30 17:56:09
원래의
171명이 탐색했습니다.

Why Does C# Allow Non-Unique Enum Values, and Should I Use a Struct Instead?

고유하지 않은 열거형 값

질문:

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;
}
로그인 후 복사

동일한 값을 가진 여러 상수가 포함된 유형에는 문제가 없기 때문입니다. , 고유하지 않은 값으로 열거형을 정의하는 것이 허용됩니다. 그러나 다음과 같은 몇 가지 주의 사항이 있습니다.

  1. 고유하지 않은 값: 고유하지 않은 값이 있는 열거형으로 변환할 때 열거형에 할당된 첫 번째 값은 다음과 같습니다. 돌아왔다. 이는 의도한 값과 일치하지 않을 수 있습니다.
  2. 동등성 비교: 고유하지 않은 열거형 값을 비교하면 예상치 못한 결과가 발생할 수 있습니다. 질문의 예를 사용하면 빨간색과 녹색은 모두 값 1을 나타내므로 빨간색과 녹색을 비교하면 본질적인 차이에도 불구하고 true가 반환됩니다.

고유하지 않은 열거형 값을 사용하는 것은 기술적으로 합법적입니다. , 일반적으로 권장되지 않습니다. 대신 고유한 값을 가진 명시적 멤버를 정의할 수 있는 구조체를 사용하는 것이 좋습니다. 그러나 구조체는 열거형에 비해 메모리 오버헤드가 더 높을 수 있으므로 요구 사항에 따라 신중하게 사용하십시오.

위 내용은 C#에서 고유하지 않은 열거형 값을 허용하는 이유는 무엇이며 대신 구조체를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿