C#中的枚举 Enum和enum的区别

2023-05-16

枚举类型本质上是一个字典,它将一组字符串映射到一组整数值。每个枚举常量都具有一个关联的整数值,默认情况下,第一个枚举常量的值为 0,后续枚举常量的值会自动加 1

C# 中有两种枚举类型:System.Enum 类型和 enum 类型

Enum类

System.Enum 类型是 C# 类型系统中的一个抽象类,它是所有枚举类型的基类可以将任何一个枚举类型都视为 System.Enum 类型。System.Enum 类型提供了一些方法和属性,用于枚举类型的操作,例如获取枚举类型的名称、值、类型,以及将枚举类型转换为字符串等。

以下是一个名为 MyEnum 的枚举类型的底层实现:

public sealed class MyEnum : System.Enum {
    public const int None = 0;
    public const int A = 1;
    public const int B = 2;
    public const int C = 3;
    
    public static readonly MyEnum none;
    public static readonly MyEnum a;
    public static readonly MyEnum b;
    public static readonly MyEnum c;
    
    static MyEnum();
    public static MyEnum[] GetValues();
    public static string[] GetNames();
    public static string GetName(int value);
    public static bool IsDefined(Type enumType, object value);
    public static readonly Type ValueType;
    public static readonly Type UnderlyingType;
    public static MyEnum Parse(string value);
    public static MyEnum Parse(string value, bool ignoreCase);
}

enum

C# 中,枚举(enum)是一种值类型,它用于定义枚举类型,表示一组具有一定可枚举范围的常量。虽然enum关键字定义的类型是一个值类型而不是一个类,但是在编译时,编译器会自动成enum类型转换为Enum类型(一个具有一组含义的数字常量的类)。enum 类型与普通的类和结构体不同,它不能继承,不能包含方法或属性,并且enum 类型定义的枚举常量是整数类型,每个枚举常量都对应一个唯一的整数值。这些限制使得enum更加简单和安全,更适合作为枚举类型的实现方式。因此,可以把C#的enum看做是对Enum类的一种包装或语法糖。

以下是 C# 中使用 enum 定义一个枚举类型的示例代码:

public enum MyEnum {
    None = 0,
    A = 1,
    B = 2,
    C = 3
}

总结

C# 中的 Enum 类和 enum 关键字都用于定义枚举类型,它们各有优劣和适用场景。

区别:

  • Enum 类是C# 系统中提供的一个抽象类,包含了一系列静态方法,用于操作枚举类型。可以继承 Enum 类来自定义枚举类型的行为。

  • enum 关键字是 C# 提供的一种语法,用于定义枚举类型,并指定一组枚举常量。使用 enum 关键字时,所有的枚举常量都默认是整数类型,并且不能继承其他类或结构体。

使用场景:

  • 需要自定义枚举类型的属性和方法,可以选择继承 Enum 类,并定义自己的枚举类型。例如,可以定义一个枚举类型来表示颜色,然后通过继承 Enum 类,为其添加一个名为 GetColorCode 的方法来获取颜色的 RGB 值。

  • 若只需要简单地定义一组枚举常量,可以使用 enum 关键字。例如,可以使用 enum 关键字定义一个枚举类型来表示星期几,其中每个枚举常量都对应一个整数值。

需要注意的是,使用Enum点操作访问枚举值时,实际上是在访问枚举类型的静态成员。这些静态成员包括枚举值和枚举值的基础类型的一些属性。因此,这与从枚举值上调用实例方法是不同的。

总的来说,System.Enum 类型和 enum 类型都是用于枚举类型的,但是它们的实现方式和用法有所不同。在实践中,我们通常可以选择适合具体场景的方式进行枚举类型的定义和操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#中的枚举 Enum和enum的区别 的相关文章

  • C++中的枚举(enum)

    C 43 43 中的枚举 enum 枚举类型 enumeration 是 C 43 43 中的一种派生数据类型 xff0c 它是由用户定义的若干枚举常量的集合 枚举是一个数值集合 xff0c 是给一个值命名的一种方法 如果想要使用整数来表示
  • C++枚举enum使用详解

    目录 一 什么是枚举enum WHAT 二 使用枚举enum的场景 WHEN and WHERE 三 如何使用枚举enum HOW 1 xff09 枚举的定义 2 xff09 枚举的初始化 3 xff09 指定枚举类型 4 声明枚举对象 5
  • C++ enum 和enum class

    文章目录 C 43 43 enum 和 enum class共同点区别 C 43 43 enum 和 enum class 在C 43 43 中 xff0c enum 是一种定义枚举类型的方法 一个枚举是一个整数值的命名集合 可以通过以下方
  • Qt Q_ENUM使用 枚举字符串互转

    目录 1 简述2 Q ENUM用法2 1 声明使用2 2 测试例子 3 用模板实现一个字符串枚举互转3 1代码3 2 用法示例 1 简述 数据库里用到了枚举的存储 xff0c 比如一个设备有两个状态 xff0c 保持数据库和代码的可读性 x
  • C#中的枚举 Enum和enum的区别

    枚举类型本质上是一个字典 xff0c 它将一组字符串映射到一组整数值 每个枚举常量都具有一个关联的整数值 xff0c 默认情况下 xff0c 第一个枚举常量的值为 0 xff0c 后续枚举常量的值会自动加 1 C 中有两种枚举类型 xff1
  • C++中枚举enum详解

    转载博客地址 xff1a https blog csdn net bruce 0712 article details 54984371 众所周知 xff0c C C 43 43 语言可以使用 define和const创建符号常量 xff0
  • java枚举(enum)使用详解

    文章目录 前言一 枚举类型定义二 访问成员三 遍历四 在switch xff08 xff09 中使用枚举五 方法1 内置方法1 1 ordinal 用于返回成员的索引1 2 compareTo 用于比较枚举类型中两个成员的索引值1 3 va
  • C#枚举(Enum)

    枚举是直接在命名空间 类或结构中使用 enum 关键字定义的 所有常量名都可以在大括号内声明 xff0c 并用逗号分隔 下面定义了工作日的枚举 示例 xff1a 定义一个枚举 enum WeekDays Monday Tuesday Wed
  • C++枚举类型enum使用方法(附带可用代码+通俗易懂)

    1 说明 枚举用来表示某类事情的结果 xff1b 例1 xff1a 下棋比赛的三种结果 xff0c 赢 xff0c 和 xff0c 输 xff1b 这里是描述比赛的结果 例2 xff1a 一周7天中的俩种结果 xff0c 工作日和非工作日
  • C 语言使用宏自定义可打印的枚举(enum) 类型

    1 前言 xff1a 说点废话 xff0c 时间紧的请直接跳过 xff0c 看后面的实现 尽管本人很反感 C 语言中的宏定义 xff0c 特别是滥用宏定义经常会让问题变的扑朔迷离 xff0c 但是不得不承认 xff0c 在某些时候 xff0
  • C/C++中枚举类型enum使用

    1 说明 xff1a 枚举enum的出现 xff0c 主要是为了解决一些特定属性的赋值 xff0c 变量取值仅在一定有限范围内的问题 例如一年只有十二个月取值 xff0c 一个星期只有七天情况 xff0c 人的性别只有男女两种等 这些属性如
  • C语言枚举类型(C语言enum用法)详解

    在实际编程中 xff0c 有些数据的取值往往是有限的 xff0c 只能是非常少量的整数 xff0c 并且最好为每个值都取一个名字 xff0c 以方便在后续代码中使用 xff0c 比如一个星期只有七天 xff0c 一年只有十二个月 xff0c
  • C++详解:枚举类型 --- enum | Xunlan_blog

    文章目录 一 概念二 定义枚举元素表 三 定义枚举对象的操作 四 要点 amp 技巧实例 一 概念 枚举类型 enumeration xff0c 是C 43 43 中的一种派生数据类型 xff0c 是用户创建的一个集合 xff0c 可以增加
  • 枚举(enum)

    一 什么是枚举 我们学习过单例模式 xff0c 即一个类只有一个实例 而枚举其实就是多例 xff0c 一个类有多个实例 xff0c 但实例的个数不是无穷的 xff0c 是有限个数的 例如word文档的对齐方式有几种 xff1a 左对齐 居中
  • 深入理解Java枚举类型(enum)

    版权申明 未经博主同意 xff0c 谢绝转载 xff01 xff08 请尊重原创 xff0c 博主保留追究权 xff09 http blog csdn net javazejian article details 71333103 出自 z
  • Android中的枚举

    在ARouter源码中发现使用到了枚举 xff0c 说明枚举并不是不常见的 xff0c 刚好枚举在我的视野中处于盲区 xff0c 于是打算周末加班给拿下 xff0c 扩展视野 了解枚举之前首先说一下什么是常量和变量 常量 声明后无法改变的量
  • C语言--符号常量

    在C语言中 可以用一个标识符来表示一个常量 称之为符号常量 其特点是编译后写在代码区 不可寻址 不可更改 属于指令的一部分 一 符号常量定义用 define 符号常量在使用之前必须先定义 其一般形式为 形式为 define 标识符 常量 e
  • IOS_Swift_enum枚举方法

    本博文为子墨原创 转载请注明出处 http blog csdn net zimo2013 article details 50116811 enum Type Int case A 1 case B 3 普通方法 func toString
  • Java,Enum里定义属性和方法

    最近的项目用到了大神写的统一返回码的代码 ErrorCode java 统一6位 异常码 author Administrator public enum ErrorCode global OK 000000 操作成功 ERROR 0000
  • enum枚举变量的用法

    Class Piece public typedef enum colorless white black pieceColor enum pieceColor colorless white black 首先声明一种枚举型变量 该变量的类

随机推荐