다음을 통해 공유


CA2248: Enum.HasFlag에 올바른 열거형 인수 제공

속성
규칙 ID CA2248
제목 Enum.HasFlag에 올바른 enum 인수를 제공하세요.
범주 사용 현황
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 10에서 기본적으로 사용하도록 설정 제안 사항

원인

HasFlag 메서드 호출에 인수로 전달된 열거형 형식이 호출하는 열거형 형식과 다릅니다.

규칙 설명

Enum.HasFlag 메서드는 해당 메서드가 호출되는 인스턴스와 동일한 enum 형식의 enum 인수를 예상합니다. 이러한 형식이 다르면 enum 런타임에 처리되지 않은 예외가 발생합니다.

위반 문제를 해결하는 방법

위반 문제를 해결하려면 인수와 호출자 모두에 동일한 열거형 형식을 사용합니다.

public class C
{
    [Flags]
    public enum MyEnum { A, B, }

    [Flags]
    public enum OtherEnum { A, }

    public void Method(MyEnum m)
    {
        m.HasFlag(OtherEnum.A); // Enum types are different, this call will cause an `ArgumentException` to be thrown at runtime

        m.HasFlag(MyEnum.A); // Valid call
    }
}

경고를 표시하지 않는 경우

이 규칙에서는 위반을 표시해야 합니다.