了解C#Enums中的[flags]屬性 c#枚舉,用
屬性裝飾時,會從將單個值表示為選項集。在僱用位運算符時,這特別有用。 讓我們說明:
[Flags]
<code class="language-csharp">[Flags] public enum Options { None = 0, Option1 = 1, Option2 = 2, Option3 = 4, Option4 = 8 }</code>屬性不會神奇地啟用位置操作;它的核心功能是改善
方法的輸出。 [Flags]
ToString()
觀察差異:
<code class="language-csharp">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"</code>>顯示單個標誌,而
顯示數值總和。 SuitsFlags
至關重要的是,Suits
[Flags]
正確的用法:
<code class="language-csharp">[Flags] public enum MyColors { Yellow, // 0 Green, // 1 Red, // 2 Blue // 3 }</code>檢查是否設置了標誌,請使用
(對於.net 4及以後):
<code class="language-csharp">[Flags] public enum MyColors { Yellow = 1, Green = 2, Red = 4, Blue = 8 }</code>或對於較舊的.NET版本,請使用位和運算符:
HasFlag()
這起來起作用,因為標誌是兩個的功率:
<code class="language-csharp">if (myProperties.AllowedColors.HasFlag(MyColor.Yellow)) { // Yellow is present }</code>
位或結合標誌;鑽頭並隔離它們。
><code class="language-csharp">if ((myProperties.AllowedColors & MyColor.Yellow) == MyColor.Yellow) { // Yellow is present }</code>避免使用位並檢查
>;它永遠是錯誤的。使用邏輯比較,查看是否設置了任何標誌。
><code>Yellow: 0001 Green: 0010 Red: 0100 Blue: 1000</code>
屬性是用於管理C#枚舉中選項集的強大工具,利用位操作進行有效的標誌操作。
>以上是[標誌]屬性如何增強C#中的枚舉功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!