Apabila menentukan penghitungan dalam C#, jika penghitungan mewakili set nilai dan bukannya satu nilai, anda boleh menggunakan harta [bendera]. Atribut ini amat berguna dalam penghitungan pengendali penggunaan.
Berbeza dengan salah faham sejagat, atribut [bendera] menyediakan borang perwakilan yang lebih mudah dibaca melalui kaedah . Penghitungan yang ditandai dengan [bendera] akan mengeluarkan nilainya, dan nilai dipaparkan dalam bentuk tanda pemisahan koma.
Nilai kuasa 2 .ToString()
enum Suits { Spades = 1, Clubs = 2, Diamonds = 4, Hearts = 8 } [Flags] enum SuitsFlags { Spades = 1, Clubs = 2, Diamonds = 4, Hearts = 8 } ... var str1 = (Suits.Spades | Suits.Diamonds).ToString(); // "5" var str2 = (SuitsFlags.Spades | SuitsFlags.Diamonds).ToString(); // "Spades, Diamonds"
<确> pernyataan yang betul:
<取> Dapatkan nilai yang berbeza:
Untuk mendapatkan nilai yang berbeza dalam atribut penghitungan, anda boleh menggunakan pelbagai kaedah:
[Flags] public enum MyColors { Yellow = 1, Green = 2, Red = 4, Blue = 8 }
Gunakan <.> (. Net 4 dan versi yang lebih tinggi tersedia):
.HasFlag()
if (myProperties.AllowedColors.HasFlag(MyColor.Yellow)) { // Yellow is allowed... }
[Flags] Ciri -ciri dibenarkan untuk mengendalikan nilai binari dengan beroperasi dengan pengkomputeran bit. Dengan menggunakan nilai kuasa 2 sebagai nilai penghitungan, binari asas nilai bermakna ia membolehkan pengiraan yang cekap dan bermakna.
if ((myProperties.AllowedColors & MyColor.Yellow) == MyColor.Yellow) { // Yellow is allowed... }
Dalam beberapa penghitungan, ia mengandungi 0 nilai (biasanya dinamakan "Tiada"). Walau bagaimanapun, perlu diperhatikan bahawa kedudukan dan & operasi yang terlibat dalam nilai tiada selalu kembali 0, jadi ia tidak sesuai untuk menguji tanda -tanda tertentu. Anda boleh menggunakan perbandingan logik.
Untuk maklumat lanjut dan sumber mengenai atribut [bendera], mod penggunaan dan reka bentuknya, lihat dokumentasi MSDN.
Atas ialah kandungan terperinci Bagaimanakah atribut enum C# [Flags] meningkatkan operasi bitwise dan kebolehbacaan penghitungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!