千家信息网

C#位域有什么用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要为大家展示了"C#位域有什么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#位域有什么用"这篇文章吧。C#位域主要用于.net里面对于某一
千家信息网最后更新 2026年11月04日C#位域有什么用

这篇文章主要为大家展示了"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#位域有什么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容 结果 星期 元素 C# 代码 面的 两个 篇文章 相同 事物 子集 就是 数据 标签 状态 类型 学习 帮助 混合 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 上海挚品互联网科技有限公司 互联网巨头科技公司 北京互联网科技 广州宏创互联网科技 南京欣网互联网科技 撒么互联网科技公司 一五八零互联网科技 北京大学互联网科技怎么样 中国的互联网科技企业的崛起 互联网科技与管理 语蝶互联网科技有限公司 电子科技大学互联网创业大赛 广东工业互联网大赛深圳学泰科技 互联网科技融合创新 有人说阿里系是互联网科技企业 易企秀互联网科技是做什么的 银川新华互联网科技学校是国营吗 中国科技和美国互联网 互联网金融金融科技 上海挚品互联网科技有限公司 沃里互联网科技 互联网 科技服务平台 湖北码尼互联网科技有限公司电话 华夏恒生互联网科技013171 工业互联网展湾科技股份有限公司 互联网金融科技元年 昆明中奇联合互联网科技 上海万顺科技互联网有限公司招聘 互联网高科技绘画
0