标志枚举的使用
標(biāo)志枚舉的使用大多是在標(biāo)記多重狀態(tài),比如說文件的屬性:只讀,可寫,隱藏,系統(tǒng)文件等相關(guān)屬性,都對(duì)應(yīng)相應(yīng)的標(biāo)志位,如果在C#中想實(shí)現(xiàn)自己的標(biāo)志枚舉,也是可以的,下文是親身試驗(yàn)的一段代碼,希望對(duì)您有所幫助,也望您不吝賜教。
// 執(zhí)行代碼 private void Form1_Load(object sender, EventArgs e) {Log.i("=========================================");StatusAttributes sa = StatusAttributes.Welcome | StatusAttributes.Login;Log.e(sa);Log.e(Convert.ToString((int)sa, 2));if ((sa & StatusAttributes.Login) == StatusAttributes.Login)Log.w("im login");// &按位與if ((sa & StatusAttributes.Meeting) != StatusAttributes.Meeting)Log.w("im not in meeting");// ^異或運(yùn)算 不同則為1 相同則為0sa = sa ^ StatusAttributes.Meeting;Log.e(sa);Log.e(Convert.ToString((int)sa, 2));// ~取反Log.e(~sa);Log.e(Convert.ToString((int)~sa, 2));Log.i("=========================================");FileAttributes fa = (FileAttributes)10;Log.e(fa);if ((fa & FileAttributes.Administrator) == FileAttributes.Administrator)Log.w("created by administrator");if ((fa & FileAttributes.Hide) != FileAttributes.Hide)Log.w("file is show");FileAttributes fa2 = fa ^ FileAttributes.Hide;Log.e(fa2);if ((fa2 & FileAttributes.Readonly) != FileAttributes.Readonly)Log.w("file2 can read and write"); }注意:a << b 的意思為:二進(jìn)制的a向左移動(dòng)b位
// 枚舉類型 [Flags] public enum StatusAttributes {None = 0,Welcome = 1 << 0,Login = 1 << 1,Meeting = 1 << 2,Share = 1 << 4,Join = 1 << 8, } [Flags] public enum FileAttributes {None = 0,System = 1,Readonly = 2,Hide = 4,Administrator = 8, }輸出結(jié)果
12-27 16:42:32.019 i ========================================= 12-27 16:42:32.023 e Welcome, Login 12-27 16:42:32.024 e 11 12-27 16:42:32.024 w im login 12-27 16:42:32.024 w im not in meeting 12-27 16:42:32.024 e Welcome, Login, Meeting 12-27 16:42:32.024 e 111 12-27 16:42:32.025 e -8 12-27 16:42:32.025 e 11111111111111111111111111111000 12-27 16:42:32.025 i ========================================= 12-27 16:42:32.025 e Readonly, Administrator 12-27 16:42:32.025 w created by administrator 12-27 16:42:32.025 w file is show 12-27 16:42:32.025 e Readonly, Hide, Administrator最后列出如何位運(yùn)算修改標(biāo)志枚舉:
StatusAttributes sa = StatusAttributes.Login | StatusAttributes.Welcome; sa = sa | StatusAttributes.Join;//添加屬性 sa = sa | StatusAttributes.Share;//添加屬性 sa = (sa | StatusAttributes.Share) ^ StatusAttributes.Share;//刪除屬性 sa = (sa | StatusAttributes.Meeting) ^ StatusAttributes.Meeting;//刪除屬性總結(jié)
- 上一篇: Linux系统下启动MySQL的命令及相
- 下一篇: Oracle 创建表 练习题