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
合併多個,使用|
showshow
=show.a
|show.b
列舉通過這個方法可以在乙個變數包含多個值
乙個簡單方法是用 hasflag,但是乙個方法是用&
showshow
=show.a
|show.b;
show.hasflag(show.a);
//其他
bool 包含 = (show
&show.a) !=
0 ;
從效能上看通過&
的效能會比 hasflag 高,但是從可讀性上 hasflag 更友好,如果你的**沒有效能問題推薦使用 hasflag 方法
只要乙個 enum 使用了 flags 標記就可以使用 hasflag 方法
showshow
=show.a
|show.b;
show
=show
& (~
show.a);
showshow
=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 進行混淆。但是如何知道乙個檔案是否已經...