C#入门系列 -- 枚举

举报
陈言必行 发表于 2022/03/13 10:26:33 2022/03/13
【摘要】 定义枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。枚举与结构体类型一样,是由程序员定义的类型。即一种由一组称为枚举数列表的命名常量组成的独特类型。枚举类型的定义形式为:enum 枚举名 { 变量1, 变量2, ..., 变量n}// 或者enum 枚举名 { 变量1 = ...

定义

枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。

C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

枚举与结构体类型一样,是由程序员定义的类型。即一种由一组称为枚举数列表的命名常量组成的独特类型。

枚举类型的定义形式为:

enum 枚举名 {
    变量1,
    变量2,
    ..., 
    变量n
}

// 或者
enum 枚举名 {
    变量1 = 1,
    变量2 = 2,
    ..., 
    变量n = n
}

这里我们通常习惯最后一个变量后面不加逗号,以表示这个枚举结束。

每个枚举类型都有一个底层整数类型,默认为int。每个枚举成员被赋值为一个底层类型的常量值;
在默认情况下,编译器把第一个成员赋值为0,并对每一个后续成员的值比前一个成员多1。

如果指定了某个枚举常量的值后,其后续的枚举常量就从当前枚举常量依次递增1。

如下图,鼠标放到WED上时,可以看到其值为3:


注意事项

  1. 与结构体类型一样,枚举是值类型,因此直接存储它们的数据,而不是分开存储数据和引用;

  2. 枚举只有一种类型的成员:命名的整数值常量;

  3. 不能对枚举类型的成员使用修饰符。它们都隐式地具有和枚举相同的可访问性;

  4. 不允许对不同枚举类型的成员进行比较,即使它们的结构和名称完全相同。

  5. 由于枚举类型的成员是常量,即使在没有该枚举类型的变量时它们也可以访问。使用枚举类型名、成员引用运算符加成员名的形式就可以实现对枚举类型成员的访问;

  6. 基础类型指定为每个枚举数分配的存储大小。但是,从enum类型到整型的转换需要用显式类型转换来完成。

  7. 通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。但是,还可以将枚举嵌套在类或结构中。

使用示例

enum WEEK
{
    MON = 1,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
}

class Program
{
    static void Main(string[] args)
    {
        // 转为string类型 
        string str = WEEK.MON.ToString();
        // 输出: MON
        Console.WriteLine(str);

        // 转为int类型
        int mon = (int)WEEK.MON;
        // 输出:1
        Console.WriteLine(mon);

        Console.ReadLine();
    }
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。