位列舉的學習

2022-02-09 09:38:03 字數 1064 閱讀 1883

列舉在開發中是很有用的,就以位列舉在許可權設計中為例.

1.定義乙個enum

加[flags]的標記,表示是位列舉,同時列舉中的值還必須是2的冪.

[flags]//

位列舉的attribute

enum roles//

值必須為2的冪

2.使用以下兩個方法可以獲取列舉中的值和名稱,

當然你可以將它們作為datasource繫結到前台的checkboxlist,dropdownlist

intintroles = enum.getvalues(typeof(roles))//

獲取該列舉所有項的值

stringstrroles = enum.getnames(typeof(role))//

獲取該列舉所有項的名稱

3.對列舉進行操作

|是位或操作,&是位與操作,^是位或操作;

**:

roles role = (roles)3;//

將int值轉換為列舉

role = role | roles.admin | roles.user;//

通過位或操作為該角色新增許可權

role = role ^ role.admin;//

通過位非操作刪除admin許可權

int introle = convert.toint32(roles);//

將列舉轉為int值,可以存入資料庫

list

roles = getenum(role);//

從資料庫中取出int值,將其轉換出roles的list表

//////

獲取角色列表list

//////

///public

static listgetenum(roles role)

}return

roles;

}

注:本來想將getenum方法寫成泛型版本,奈何system.enum不能用於泛型約束!

列舉與位列舉

列舉型別 是用於宣告一組命名的常數的基本資料型別 值型別 列舉的定義 宣告enum變數 enum name 指定列舉的型別名稱 enumeration list 是乙個用逗號分隔的識別符號列表 所有列舉型別都隱式地繼承system.enum型別,system.enum型別是繼承自system.val...

c 列舉與位列舉

環境 c 中的列舉本質上說是乙個整數,但它同時和字串又具有對應關係,可以從vs的提示中看出 下面 演示列舉與數字和字串的相互轉換 public static void main string args 數字轉列舉 console.writeline 數字轉列舉 列舉轉字串 console.write...

列舉型別的位運算

stringformatflags 列舉 指定文字字串的顯示和布局資訊。此列舉有乙個屬性,允許其成員值按位組合。其中有這麼一項 nowrap 在矩形內設定格式時,禁用文字換行功能。當傳遞的是點而不是矩形時,或者指定的矩形行長為零時,已隱含此標記。當確保文字布局的時候不換行可以將stringforma...