列舉在開發中是很有用的,就以位列舉在許可權設計中為例.
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...