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