中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#位域有什么用

發布時間:2021-12-01 14:09:25 來源:億速云 閱讀:154 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“C#位域有什么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C#位域有什么用”這篇文章吧。

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

[Flags]  public enum Week  {  [Description("星期一")]  Monday = 1 < <  0,  [Description("星期二")]  Tuesday = 1 < <  1,  [Description("星期三")]  Wednesday = 1 < <  2,  [Description("星期四")]  Tursday = 1 < <  3,  [Description("星期五")]  Friday = 1 < <  4,  [Description("星期六")]  Saturday = 1 < <  5,  [Description("星期日")]  Sunday = 1 < <  6  }

位域支持的運算符

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

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

這段代碼的結果就是 Monday,Tuesday

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

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

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

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

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

上面兩個返回的結果應該為:Tuesday,Wednesday 和 Monday,Tuesday,Wednesday,Sunday

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

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

上面返回的結果為:Tuesday,Wednesday

正逆轉化

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

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

返回的結果為:3 和 Tuesday,Tursday

獲取Description標簽內容

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

/// < summary>  /// 從枚舉類型和它的特性讀出并返回一個鍵值對  /// < /summary>  /// < param name="enumType">Type,該參數的格式為typeof(需要讀的枚舉類型)< /param>  /// < returns>鍵值對< /returns>  public static NameValueCollection GetNVCFromEnumValue(Type enumType)  {  NameValueCollection nvc = new NameValueCollection();  Type typeDescription = typeof(DescriptionAttribute);  System.Reflection.FieldInfo[] fields = enumType.GetFields();  string strText = string.Empty;  string strValue = string.Empty;  foreach (FieldInfo field in fields)  {  if (field.FieldType.IsEnum)  {  strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();  object[] arr = field.GetCustomAttributes(typeDescription, true);  if (arr.Length > 0)  {  DescriptionAttribute aa = (DescriptionAttribute)arr[0];  strText = aa.Description;  }  else {  strText = field.Name;  }  nvc.Add(strText, strValue);  }  }  return nvc;  }

以上是“C#位域有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

翁源县| 龙陵县| 华安县| 黔西县| 手游| 清水县| 凯里市| 上虞市| 离岛区| 枝江市| 疏附县| 临泉县| 清水县| 曲周县| 沙雅县| 岱山县| 东阿县| 萨嘎县| 肥乡县| 广灵县| 金山区| 巢湖市| 锦州市| 三明市| 克山县| 沽源县| 白水县| 册亨县| 阆中市| 中牟县| 宝应县| 高尔夫| 灵川县| 福清市| 密山市| 科技| 株洲县| 宁乡县| 元氏县| 饶平县| 行唐县|