日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
簡要介紹C#位域(flags)的相關(guān)知識

C#位域主要用于.net里面對于某一個事物有多種混合狀態(tài)時使用,單一的枚舉更的在事物只具有單一屬性時使用。為了更好的實現(xiàn)混合狀態(tài),我們可以在枚舉加上C#位域標(biāo)簽。下面的這個就是我們在本文中用到的實例:

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了萬州免費建站歡迎大家使用!

 
 
 
  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
  18. }

位域支持的運算符

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

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

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

2. “&”:表示兩邊是否其中一個是另外一個的子集,如果是返回子集,否則返回0(如果其中一個包含另外一個,返回被包含的,否則返回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.“^”:表示從兩者的并集中去除兩者的交集(把兩個的元素合并到一起,如果兩個中有公共元素,要將這個公共元素從合并的結(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());

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

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

 
 
 
  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ù)字即可,例如:1表示Monday,3表示Monday,Tuesday。我們可以根據(jù)數(shù)據(jù)庫里面的值方便獲取存儲的內(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,就可以在程序中獲取到這個內(nèi)容,至于用途,大家自己看吧,東西擺出來,大家自己隨便怎么用,下面的代碼是從網(wǎng)上找到的,內(nèi)容如下:

 
 
 
  1. /// < summary>
  2. /// 從枚舉類型和它的特性讀出并返回一個鍵值對
  3. /// < /summary>
  4. /// < param name="enumType">Type,該參數(shù)的格式為typeof(需要讀的枚舉類型)< /param>
  5. /// < returns>鍵值對< /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, null, null, null)).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;
  32. }

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


網(wǎng)頁標(biāo)題:簡要介紹C#位域(flags)的相關(guān)知識
文章URL:http://www.5511xx.com/article/copihjp.html