| 屬性 | 值 |
|---|---|
| 規則識別碼 | 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
}
}
隱藏警告的時機
請勿隱藏此規則的違規。