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 8 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 ini adalah jenis yang berbeda enum , pengecualian yang tidak tertangani akan dilemparkan pada waktu proses.

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 run time

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

Kapan harus menekan peringatan

Jangan menekan pelanggaran dari aturan ini.