新聞中心
這篇文章主要為大家展示了“C#位域有什么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C#位域有什么用”這篇文章吧。
在劍閣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需網(wǎng)站設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),劍閣網(wǎng)站建設(shè)費用合理。
C#位域主要用于.net里面對于某一個事物有多種混合狀態(tài)時使用,單一的枚舉更的在事物只具有單一屬性時使用。為了更好的實現(xiàn)混合狀態(tài),我們可以在枚舉加上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. “|”:表示兩邊求并集(元素相加,相同元素只出現(xiàn)一次)
Week week = Week.Tuesday | Week.Monday | Week.Monday; MessageBox.Show(Convert.ToString(week));
這段代碼的結(jié)果就是 Monday,Tuesday
2. “&”:表示兩邊是否其中一個是另外一個的子集,如果是返回子集,否則返回0(如果其中一個包含另外一個,返回被包含的,否則返回0)
week = Week.Monday & week; MessageBox.Show(week.ToString());與week = week & Week.Monday; MessageBox.Show(week.ToString());
上面這兩段代碼的結(jié)果是相同的,如果week的初始值為:Monday,Tuesday,返回的結(jié)果為:Monday
3.“^”:表示從兩者的并集中去除兩者的交集(把兩個的元素合并到一起,如果兩個中有公共元素,要將這個公共元素從合并的結(jié)果中去除)
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());
上面兩個返回的結(jié)果應(yīng)該為:Tuesday,Wednesday 和 Monday,Tuesday,Wednesday,Sunday
4.“~”:表示取反,返回的結(jié)果我還不知道應(yīng)該是什么,以后再查一下。用法主要和“&”一起使用,例如:去除其中的某個元素
week = Week.Tuesday | Week.Monday | Week.Wednesday; week = week &(~Week.Monday); MessageBox.Show(week.ToString());
上面返回的結(jié)果為:Tuesday,Wednesday
正逆轉(zhuǎn)化
上面的內(nèi)容存在數(shù)據(jù)庫時我們可能為了簡單只存取數(shù)字即可,例如:1表示Monday,3表示Monday,Tuesday。我們可以根據(jù)數(shù)據(jù)庫里面的值方便獲取存儲的內(nèi)容,代碼如下:
week = Week.Monday | Week.Tuesday; MessageBox.Show(Convert.ToString((int)week)); week = (Week)Enum.Parse(typeof(Week), "10"); MessageBox.Show(week.ToString());
返回的結(jié)果為:3 和 Tuesday,Tursday
獲取Description標簽內(nèi)容
我們既然可以給里面的值加上Description,就可以在程序中獲取到這個內(nèi)容,至于用途,大家自己看吧,東西擺出來,大家自己隨便怎么用,下面的代碼是從網(wǎng)上找到的,內(nèi)容如下:
/// < summary> /// 從枚舉類型和它的特性讀出并返回一個鍵值對 /// < /summary> /// < param name="enumType">Type,該參數(shù)的格式為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#位域有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享標題:C#位域有什么用
網(wǎng)站URL:http://www.ef60e0e.cn/article/joodhi.html