CA2248: 正しい enum 引数を Enum.HasFlag に指定します
プロパティ | 値 |
---|---|
ルール ID | CA2248 |
Title | 正しい enum 引数を Enum.HasFlag に指定します |
[カテゴリ] | 使用方法 |
修正が中断ありか中断なしか | なし |
.NET 8 では既定で有効 | 提案として |
原因
HasFlag
メソッドに引数として渡された列挙型が呼び出し元の列挙型と異なります。
規則の説明
Enum.HasFlag
メソッドでは、メソッドが呼び出されるインスタンスと同じ enum
型になることが 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 run time
m.HasFlag(MyEnum.A); // Valid call
}
}
どのようなときに警告を抑制するか
この規則からは違反を抑制しないでください。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET