Share via


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

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

원인

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

규칙 설명

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

위반 문제를 해결하는 방법

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

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 run time

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

경고를 표시하지 않는 경우

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