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

屬性
規則識別碼 CA2248
標題 請提供正確的列舉引數給 Enum.HasFlag
類別 使用方式
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 建議

原因

傳遞為 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 run time

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

隱藏警告的時機

請勿隱藏此規則的違規。