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

枚举类型本质上是一个字典,它将一组字符串映射到一组整数值。每个枚举常量都具有一个关联的整数值,默认情况下,第一个枚举常量的值为 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 类型都是用于枚举类型的,但是它们的实现方式和用法有所不同。在实践中,我们通常可以选择适合具体场景的方式进行枚举类型的定义和操作。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值