Bagikan melalui


CA2248: Berikan argumen enum yang benar ke Enum.HasFlag

Properti Nilai
ID Aturan CA2248
Judul Berikan argumen enum yang benar ke Enum.HasFlag
Golongan Penggunaan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 10 Sebagai saran

Penyebab

Jenis enum yang diteruskan sebagai argumen ke panggilan metode HasFlag berbeda dari jenis enum panggilan.

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 menekan pelanggaran dari aturan ini.