Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah atribut enum C# [Flags] meningkatkan operasi bitwise dan kebolehbacaan penghitungan?

Bagaimanakah atribut enum C# [Flags] meningkatkan operasi bitwise dan kebolehbacaan penghitungan?

Barbara Streisand
Lepaskan: 2025-02-02 14:56:10
asal
526 orang telah melayarinya

How Does the C# [Flags] Enum Attribute Enhance Bitwise Operations and Enumeration Readability?

[Flags] Atribut yang disenaraikan dalam [ C#: Memahami peranannya

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.

[bendera] Kepentingan atribut

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"
Salin selepas log masuk
Ia mesti ditekankan bahawa atribut [bendera] tidak secara automatik menetapkan nilai kuasa 2 untuk penghitungan. Jika nilai nilai dilangkau, pemegangan operasi dalam kedudukan tidak betul, kerana nilai lalai meningkat dari 0.

<确> 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
}
Salin selepas log masuk

Gunakan <.> (. Net 4 dan versi yang lebih tinggi tersedia):

    Gunakan pengendali kedudukan (sebelum .net 4):
  • .HasFlag()

      if (myProperties.AllowedColors.HasFlag(MyColor.Yellow))
      {
          // Yellow is allowed...
      }
    Salin selepas log masuk
    <底> Mekanisme yang mendasari
  • [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...
      }
    Salin selepas log masuk
    Sebagai contoh, jika atribut dibenarkan menggunakan binari mengikut bit atau | none = 0 Value

    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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan