2019 9 2 C 列舉中使用Flags特性

2022-01-13 08:26:20 字數 1269 閱讀 2995

title

author

date

createtime

categories

c#列舉中使用flags特性

lindexi

2019-09-02 12:57:37 +0800

2018-2-13 17:23:3 +0800

c#如果對乙個值可以包含多個,那麼可以使用列舉,加上flags

在寫前,需要知道一些基礎知識,取反、或、與,如果不知道的話,請去看看基礎。

當然,這些太複雜了,我也不會在這裡解釋。

假如有型別 show 的定義如下

[flags]

public

enum

show

合併多個,使用|

show

show

=show.a

|show.b

列舉通過這個方法可以在乙個變數包含多個值

乙個簡單方法是用 hasflag,但是乙個方法是用&

show

show

=show.a

|show.b;

show.hasflag(show.a);

//其他

bool 包含 = (show

&show.a) !=

0 ;

從效能上看通過&的效能會比 hasflag 高,但是從可讀性上 hasflag 更友好,如果你的**沒有效能問題推薦使用 hasflag 方法

只要乙個 enum 使用了 flags 標記就可以使用 hasflag 方法

show

show

=show.a

|show.b;

show

=show

& (~

show.a);

show

show

=show.a

|show.b;

bool 包含=(show

&show.a)!=

0; if(包含)

else

需要知道在以前,寫列舉的值,不是二進位制,現在c#7可使用二進位制

[flags]

public

enum

show

於是這樣就可以合併多個值,用乙個 byte 表示乙個值

參見:

2019 9 2 C 列舉中使用Flags特性

title author date createtime categories c 列舉中使用flags特性 lindexi 2019 09 02 12 57 37 0800 2018 2 13 17 23 3 0800 c 如果對乙個值可以包含多個,那麼可以使用列舉,加上flags 在寫前,需要知...

2019 9 2 C 同步方法轉非同步

title author date createtime categories c 同步方法轉非同步 lindexi 2019 09 02 12 57 37 0800 2018 2 13 17 23 3 0800 c 最簡單的方法是建立乙個新的執行緒,建立的方法是使用 task.run 請看下面 原...

2019 9 2 C 判斷檔案是否被混淆

title author date createtime categories c 判斷檔案是否被混淆 lindexi 2019 09 02 12 57 37 0800 2018 2 13 17 23 3 0800 c 可以使用混淆工具對乙個dll 和 exe 進行混淆。但是如何知道乙個檔案是否已經...