簡體   English   中英

確定是否設置了特定標志的最佳表達式是什么

[英]What's the best expression to determine whether a specific flag is set

我正在使用此代碼來確定是否設置了特定標志。 是否有任何簡短的表達式(不重復someFlag.flag1兩次)?

[Flag]
enum someFlag
{
    flag1 = 0x0,
    flag2 = 0x2,
    flag3 = 0x4
}

if ((someFlag & someFlag.flag1) == someFlag.flag1)

如果沒有,我會創建一個擴展方法。 任何想法?

如果您使用的是 .NET4,那么您可以使用內置的HasFlag方法。

if (yourValue.HasFlag(someFlag.flag1)) DoSomething();

在框架的早期版本中,您已經擁有的東西很好(我認為這正是HasFlag在幕后所做的)。

使用Unconstrained Melody ,您可以在不需要 .NET 4 的情況下獲得Enum.HasFlag的好處,增加類型安全性,並且無需裝箱:)

if (foo.HasAll(SomeFlag.Flag1))

(有HasAnyHasAll方法,因為您傳遞的參數可以包含多個要匹配的標志。)

嘗試:

if ((someFlag & someFlag.flag1) != 0)

此外,您不應該有 flag1 = 0 - 它必須是 0x01,否則標志將不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM