CA2248:請提供正確的列舉引數給 Enum.HasFlag

屬性
規則識別碼 CA2248
職稱 請提供正確的枚舉引數給 Enum.HasFlag
類別 使用方式
修正是造成中斷還是不中斷 不中斷
在 .NET 10 中預設啟用 作為建議
適用語言 C# 與 Visual Basic

原因

傳遞給 HasFlag 方法的引數之列舉型別與呼叫方的列舉型別不同。

規則描述

方法要求Enum.HasFlagenum參數的類型與調用該方法的實例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
    }
}

隱藏警告的時機

請勿隱藏此規則的違規。