Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| 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.