CA2248: Berikan argumen enum yang benar ke Enum.HasFlag

Properti Nilai
ID Aturan CA2248
Judul Berikan argumen enum yang benar ke Enum.HasFlag
Kategori Penggunaan
Perbaikan bersifat merusak atau tidak merusak Tidak terputus
Diaktifkan secara default di .NET 10 Sebagai saran
Bahasa yang berlaku C# dan Visual Basic

Penyebab

Tipe enum yang diteruskan sebagai argumen ke pemanggilan metode HasFlag berbeda dari tipe enum yang melakukan panggilan tersebut.

Deskripsi aturan

Metode Enum.HasFlag mengharapkan argumen memiliki jenis yang sama enum dengan instans enum tempat metode dipanggil. Jika jenis-jenis ini berbeda enum, pengecualian yang tidak tertangani akan terjadi pada runtime.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran, gunakan jenis enum yang sama pada argumen dan pemanggil:

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
    }
}

Kapan harus menekan peringatan

Jangan mengabaikan pelanggaran atas aturan ini.