详解C# 枚举与位枚举

本篇文章为大家分享一下C# 枚举与位枚举,文中讲解非常细致,帮助大家更好的理解和学习枚举和位枚举,感兴趣的朋友可以了解下

一、枚举的概念

C# 枚举(Enum), 枚举类型是用于声明一组命名的常数的基本数据类型(值类型);

二、枚举的定义

声明 enum 变量:

enum  {enumeration list};

其中 enum_name 指定枚举的类型名称,enumeration list 是一个用逗号分隔的标识符列表; 枚举列表中的每个符号代表一个整数值,一个比他前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0。例如:

enum Days {Sun , Mon, tue, Fir, sat };

三、枚举的案例,枚举变量的用法

实例

using System;
namespace EnumApplication
{
   class EnumProgram
   {
         enum Days { Sun, Mon, tue, Wed, thu, Fri, sat };
       
         static void Main(string[] args)
         {
               int WeekdayStart = (int)Days.Mon;
               int WeekdayEnd = (int)Days.Fir;
               Console.WriteLine("Monday:{0}",WeekdayStart);  
               Console.WriteLine("Firday:{0}",WeekdayEnd );  
               Console.ReadKey();
         }    
   }
}

四、Enum 类:

所有枚举类型都隐式地继承 System.Enum 类型, System.Enum 类型是继承自 System.ValueType 类型唯一不为值类型的引用类型;

五、Enum 类

方法描述
CompareTo将此实例与指定对象进行比较并返回一个对二者的相对值的指示
Equals:指示此实例是否等于指定的对象;
Format根据指定格式将指定枚举类型的指定值转换为其等效的字符串表示形式
GetName在指定枚举中检索具有指定值的常数的名称
GetNames检索指定枚举中常数名称的数组
GetTypeCode返回此实例的基础TypeCode
GetUnderlyingTye返回指定枚举的基础类型
GetValues指定枚举中常数值的数组
HasFlag确定当前实例中是否设置了一个或多个位域
IsDefined返回指定枚举中是否存在具有指定值的常数的指示
Parse将一个或多个枚举常数的名称或数字值得字符串表示转换成等效得枚举对象,一个参数指定该操作是否不区分大小写
TryParse将一个或多个枚举常数得名称或数字值得字符串表示转换成等效得枚举对象,用于指示转换是否成功得返回值

显示详细信息

六、标志枚举/位枚举

C# 标记枚举(Flags):枚举类型是用于声明一组命名得常数得基本类型数据(值类型)。

枚举值是互斥得。而位标记集合是一种由组合出现得元素形成得列表,通常设计为以”位或”运算组合新值。

枚举类型则通常表达一种语义相对独立得数值集合。而以枚举类型来实现位标记集合是最完美得组合,简称位枚举。

七、位枚举得定义

///
  /// 权限枚举
  ///
  [Flags]
  public enum permission                     注意加了[Flags]特性后有三种写法,
  {                                  一种是使用

八、位枚举的实例

//1、给用户创建、读取,修改和删除的权限
var parmission = Permission.Create | parmission.Read | parmission.Update | parmission.Delete;

//2、去掉用户的修改和删除权限
parmission = parmission &~parmission.Update;
parmission = parmission &~parmission.Delete;

//3、给用户加上修改的权限
parmission = parmission | parmission.Update;

//4、判断用户是否有创建的权限
var isCreate = (parmission & parmission.Create)!=0;
//或者
var isCreate = (parmission & parmission.Create)==parmission.Create;
  这时parmission枚举的值将变成0+1+4=5,它的ToSting()将变成“parmission.Create,
  parmission.Read”,parmission.Update; 这里我们可以解释为什么第五个值Delete是8而不能成为5。
  也就是说它的值不应该是前几项值的复合值。一个比较简单的方法
  就是用2的n次方来依次位每一项赋值,例如:1,2,4,8,16,32,64.......。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/219843.html<

(0)
管理的头像管理
上一篇2025-04-14 07:22
下一篇 2025-04-14 07:23

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注