成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡要介紹C#位域(flags)的相關(guān)知識(shí)

開發(fā) 后端
C#位域主要用于.net里面對(duì)于某一個(gè)事物有多種混合狀態(tài)時(shí)使用。本文通過實(shí)例介紹了C#位域[flags]的相關(guān)知識(shí),供大家參考。

C#位域主要用于.net里面對(duì)于某一個(gè)事物有多種混合狀態(tài)時(shí)使用,單一的枚舉更的在事物只具有單一屬性時(shí)使用。為了更好的實(shí)現(xiàn)混合狀態(tài),我們可以在枚舉加上C#位域標(biāo)簽。下面的這個(gè)就是我們?cè)诒疚闹杏玫降膶?shí)例:

  1. [Flags]  
  2. public enum Week  
  3. {  
  4. [Description("星期一")]  
  5. Monday = 1 < <  0,  
  6. [Description("星期二")]  
  7. Tuesday = 1 < <  1,  
  8. [Description("星期三")]  
  9. Wednesday = 1 < <  2,  
  10. [Description("星期四")]  
  11. Tursday = 1 < <  3,  
  12. [Description("星期五")]  
  13. Friday = 1 < <  4,  
  14. [Description("星期六")]  
  15. Saturday = 1 < <  5,  
  16. [Description("星期日")]  
  17. Sunday = 1 < <  6  

位域支持的運(yùn)算符

1. “|”:表示兩邊求并集(元素相加,相同元素只出現(xiàn)一次)

  1. Week week = Week.Tuesday | Week.Monday | Week.Monday;  
  2. MessageBox.Show(Convert.ToString(week)); 

這段代碼的結(jié)果就是 Monday,Tuesday

2. “&”:表示兩邊是否其中一個(gè)是另外一個(gè)的子集,如果是返回子集,否則返回0(如果其中一個(gè)包含另外一個(gè),返回被包含的,否則返回0)

  1. week = Week.Monday & week;  
  2. MessageBox.Show(week.ToString());與week = week & Week.Monday;  
  3. MessageBox.Show(week.ToString()); 

上面這兩段代碼的結(jié)果是相同的,如果week的初始值為:Monday,Tuesday,返回的結(jié)果為:Monday

3.“^”:表示從兩者的并集中去除兩者的交集(把兩個(gè)的元素合并到一起,如果兩個(gè)中有公共元素,要將這個(gè)公共元素從合并的結(jié)果中去除)

  1. week = (Week.Monday | Week.Wednesday)^ (Week.Tuesday | Week.Monday);  
  2. MessageBox.Show(week.ToString());  
  3. week = (Week.Monday | Week.Wednesday) ^ (Week.Tuesday | Week.Sunday);  
  4. MessageBox.Show(week.ToString()); 

上面兩個(gè)返回的結(jié)果應(yīng)該為:Tuesday,Wednesday 和 Monday,Tuesday,Wednesday,Sunday

4.“~”:表示取反,返回的結(jié)果我還不知道應(yīng)該是什么,以后再查一下。用法主要和“&”一起使用,例如:去除其中的某個(gè)元素

  1. week = Week.Tuesday | Week.Monday | Week.Wednesday;  
  2. week = week &(~Week.Monday);  
  3. MessageBox.Show(week.ToString()); 

上面返回的結(jié)果為:Tuesday,Wednesday

正逆轉(zhuǎn)化

上面的內(nèi)容存在數(shù)據(jù)庫時(shí)我們可能為了簡單只存取數(shù)字即可,例如:1表示Monday,3表示Monday,Tuesday。我們可以根據(jù)數(shù)據(jù)庫里面的值方便獲取存儲(chǔ)的內(nèi)容,代碼如下:

  1. week = Week.Monday  | Week.Tuesday;  
  2. MessageBox.Show(Convert.ToString((int)week));  
  3. week = (Week)Enum.Parse(typeof(Week), "10");  
  4. MessageBox.Show(week.ToString()); 

返回的結(jié)果為:3 和 Tuesday,Tursday

獲取Description標(biāo)簽內(nèi)容

我們既然可以給里面的值加上Description,就可以在程序中獲取到這個(gè)內(nèi)容,至于用途,大家自己看吧,東西擺出來,大家自己隨便怎么用,下面的代碼是從網(wǎng)上找到的,內(nèi)容如下:

  1. /// < summary>  
  2. /// 從枚舉類型和它的特性讀出并返回一個(gè)鍵值對(duì)  
  3. /// < /summary>  
  4. /// < param name="enumType">Type,該參數(shù)的格式為typeof(需要讀的枚舉類型)< /param>  
  5. /// < returns>鍵值對(duì)< /returns>  
  6. public static NameValueCollection GetNVCFromEnumValue(Type enumType)  
  7. {  
  8. NameValueCollection nvc = new NameValueCollection();  
  9. Type typeDescription = typeof(DescriptionAttribute);  
  10. System.Reflection.FieldInfo[] fields = enumType.GetFields();  
  11. string strText = string.Empty;  
  12. string strValue = string.Empty;  
  13. foreach (FieldInfo field in fields)  
  14. {  
  15. if (field.FieldType.IsEnum)  
  16. {  
  17. strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, nullnullnull)).ToString();  
  18. object[] arr = field.GetCustomAttributes(typeDescription, true);  
  19. if (arr.Length > 0)  
  20. {  
  21. DescriptionAttribute aa = (DescriptionAttribute)arr[0];  
  22. strText = aa.Description;  
  23. }  
  24. else 
  25. {  
  26. strText = field.Name;  
  27. }  
  28. nvc.Add(strText, strValue);  
  29. }  
  30. }  
  31. return nvc;  

C#位域(flags)的相關(guān)知識(shí)就介紹到這里。

【編輯推薦】

  1. 看看C# Hook 如何實(shí)現(xiàn)
  2. 學(xué)習(xí)C#虛函數(shù)實(shí)例演示
  3. 一個(gè)C#數(shù)據(jù)訪問XML的例子
  4. C#特性之通俗演義
  5. 探尋C# 3.5新特性
責(zé)任編輯:book05 來源: cnblogs
相關(guān)推薦

2009-08-05 18:28:05

C#異常處理

2009-08-21 08:41:44

C#反射

2009-08-28 10:22:47

C# DLLImpor

2009-07-31 16:48:44

C#位運(yùn)算

2009-08-13 14:59:00

C#數(shù)據(jù)訪問層

2009-09-01 16:14:08

C# Socket類

2009-08-07 13:30:20

C# Excel導(dǎo)入

2009-08-10 14:03:08

C# COM接口

2009-08-11 15:17:12

C#基礎(chǔ)知識(shí)

2009-08-13 15:40:28

C#基礎(chǔ)知識(shí)

2009-09-01 15:08:07

C#命名規(guī)范

2010-03-30 10:24:51

Nginx+PHP配置

2010-02-03 13:33:42

C++預(yù)處理命令

2010-03-19 09:52:13

無線互聯(lián)網(wǎng)

2009-06-12 09:22:44

VB.NET類型C#

2009-09-02 18:28:00

C#鼠標(biāo)位置

2009-08-12 18:35:36

C# ArrayLis

2009-09-07 15:40:06

2009-08-26 11:30:16

C# Arraylis

2021-10-24 11:11:30

Spring開源Java開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久国产 | 欧美一卡二卡在线观看 | 久草视频在线播放 | 色吧色综合 | 成人小视频在线观看 | 天天干 夜夜操 | 国产欧美三区 | 国产九九九 | 国产成人精品一区二区三区 | 老子午夜影院 | 国产精品久久福利 | 日韩无 | 国产精品夜间视频香蕉 | 81精品国产乱码久久久久久 | 一区中文字幕 | 久久久久久国产精品三区 | 日本中出视频 | 色婷婷狠狠 | 日韩一区在线播放 | 天天综合久久网 | 国产亚洲精品久久yy50 | 三区在线观看 | 欧美 日韩 综合 | 国产亚洲欧美另类一区二区三区 | 高清av在线 | 97精品久久 | 欧美一级电影免费观看 | 在线视频a | 国产1区2区 | 狠狠艹| 欧美在线观看一区二区 | 男女免费视频网站 | 精品久久国产 | 免费观看黄色一级片 | 日韩精品视频在线播放 | 久久久精品影院 | 范冰冰一级做a爰片久久毛片 | 国产精品视频观看 | 伊人成人免费视频 | 91国产在线播放 | 99久久电影|