> 백엔드 개발 > C++ > C#에서 Enum 일반 제약 조건이 없는 문제를 어떻게 해결할 수 있나요?

C#에서 Enum 일반 제약 조건이 없는 문제를 어떻게 해결할 수 있나요?

Patricia Arquette
풀어 주다: 2025-01-19 07:06:09
원래의
748명이 탐색했습니다.

How Can We Work Around the Lack of Enum Generic Constraints in C#?

열거 일반 제약 조건에 대한 C# 대안

C# 프로그래밍에서는 열거형 일반 제약 조건이 부족하여 플래그 열거형에 대한 특정 작업을 수행하려고 할 때 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 UnconstrainedMelody 라이브러리를 사용하여 해결 방법을 살펴보겠습니다.

UnconstrainedMelody는 "의사" 일반 제약 조건을 "실제" 제약 조건으로 변환합니다. 예를 들면 다음과 같습니다.

<code>where T : struct, IEnumConstraint</code>
로그인 후 복사

다음으로 변환:

<code>where T : struct, System.Enum</code>
로그인 후 복사

이를 통해 개발자는 다음과 같은 메서드를 정의할 수 있습니다.

<code>public static bool IsSet<T>(this T input, T matchTo)
    where T : System.Enum
{
    return (input & matchTo) != 0;
}</code>
로그인 후 복사

이 방법을 사용하면 다음을 수행할 수 있습니다.

<code>MyEnum tester = MyEnum.FlagA | MyEnum.FlagB;

if (tester.IsSet(MyEnum.FlagA))
    // 对标志 a 执行操作</code>
로그인 후 복사

UnconstrainedMelody는 빌드 후 단계가 완료된 후 원활하게 통합됩니다.

그러나 여러 플래그가 지정된 경우 'IsSet' 메서드의 동작을 고려하세요.

<code>tester.IsSet(MyFlags.A | MyFlags.C);</code>
로그인 후 복사

모든 플래그가 설정되었는지 확인해야 하나요, 아니면 하나만 설정해야 하나요? 권장되는 동작은 모든 플래그를 확인하는 것입니다.

UnconstrainedMelody는 이 방법에 대해 여러 가지 이름 지정 옵션을 제공합니다.

  • 포함
  • 포함
  • HasFlag/HasFlags
  • IsSet

'IsSet'이라는 이름은 괜찮지만 피드백을 환영합니다. 이 해결 방법은 변경될 수 있으며 UnconstrainedMelody는 패치 또는 직접 제출을 환영합니다.

위 내용은 C#에서 Enum 일반 제약 조건이 없는 문제를 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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