举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > c#枚举类型enum用法 C# 枚举

c#枚举类型enum用法 C# 枚举

2023-02-28 00:18 C#教程

c#枚举类型enum用法 C# 枚举

c#枚举类型enum用法

C#枚举类型enum是一种特殊的数据类型,它可以用来定义一组常量,这些常量可以用来表示特定的值。枚举是一种强大的工具,可以让你在代码中使用有意义的名字来表示数字常量。

使用enum声明一个枚举变量,语法如下:

enum 枚举名 { 
    成员1, 
    成员2, 
    ... 
}

例如,我们可以声明一个名为Weekdays的枚举,它包含7天中的7个成员:

enum Weekdays { 
    Sunday, 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
    Friday, 
    Saturday   }

默认情况下,Sunday将被分配0、Monday将被分配1、Tuesday将被分配2、依此类推。但是我们也可以手动分配值。例如,我们可以将Sunday分配100、Monday分配101、Tuesday分配102、依此类推。语法如下所示:

enum Weekdays { 

     Sunday = 100,  

     Monday = 101,  

     Tuesday = 102,  

     Wednesday = 103,  

     Thursday = 104,  

     Friday = 105,  

     Saturday = 106 }

当我们使用Weekdays时,就会遇到有意义的名字而不是数字常量。这样就能够减少出错的机会并使代码更加易读。例如,我们可以使用Weekdays.Monday而不是101来表示星期一。

C# 枚举

C#枚举

枚举是一种特殊的值类型,是指定的数字常量组。

例子

例如:

public enum Direction { Left, Right, Top, Bottom } 

我们可以使用这个枚举类型如下:

Direction topSide = Direction.Top; 
bool isTop = (topSide == Direction.Top); // true 

基本整数值

每个枚举成员都有一个基本的整数值。

默认情况下,底层值的类型为int。

将以枚举成员的声明顺序自动分配常量0,1,2 ...。

我们可以指定一个替代整数类型,如下:

public enum Direction : byte { 
   Left, Right, Top, Bottom 
}

我们还可以为每个枚举成员指定明确的底层值:

public enum Direction : byte { 
   Left=1, Right=2, Top=10, Bottom=11 
} 

编译器还允许我们显式地分配一些枚举成员。

未赋值的枚举成员保持从最后一个显式值开始递增。

上述示例等效于以下内容:

public enum Direction : byte { 
   Left=1, Right, Top=10, Bottom 
} 

枚举转换

我们可以使用显式转换将枚举实例转换为其基础整数值:

int i = (int) Direction.Left; 
Direction side = (Direction) i; 
bool leftOrRight = (int) side <= 2; 

数字文字0由编译器在枚举表达式中特别处理,不需要显式转换:

Direction b = 0; // No cast required 
if (b == 0) ... 

枚举的第一个成员通常用作“默认”值。

对于组合枚举类型,0表示“无标志”。


标志枚举

我们可以结合枚举成员。

为了防止歧义,可组合枚举的成员需要明确赋值,通常为2的幂。

例如:

[Flags] 
public enum Directions { 
   None=0, Left=1, Right=2, Top=4, Bottom=8 
} 

要使用组合枚举值,我们使用位运算符,例如|和&

它们对基本整数值进行操作:

Directions leftRight = Directions.Left | Directions.Right; 

if ((leftRight & Directions.Left) != 0) {
   Console.WriteLine ("Includes Left"); // Includes Left 
}
string formatted = leftRight.ToString(); // "Left, Right" 

Directions s = Directions.Left; 
s |= Directions.Right; 
Console.WriteLine (s == leftRight); // True 
s ^= Directions.Right; // Toggles Directions.Right 
Console.WriteLine (s); // Left 

按照惯例,当其成员可组合时,Flags属性应该始终应用于枚举类型。

为方便起见,您可以在枚举声明中包含组合成员:

[Flags] 
public enum Directions {
    None=0,  Left=1, Right=2, Top=4, Bottom=8, 
    LeftRight = Left | Right, 
    TopBottom = Top | Bottom, 
    All = LeftRight | TopBottom 
} 

枚举运算符

使用枚举的运算符有:

= == != < > <= >= + -^ & | ? 
+= -= ++ -- sizeof 

按位,算术和比较运算符返回处理基本整数值的结果。

允许在枚举和整数类型之间添加,但不允许在两个枚举之间添加。

阅读全文
以上是编程学为你收集整理的c#枚举类型enum用法 C# 枚举全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • C# 嵌套类型

    C# 嵌套类型

    2023-02-23 C#教程

    C#嵌套类型嵌套类型在另一个类型的范围内声明。例如:public class Main { public class Nested { } // Nested class public enu...

  • c#条件运算符 C# 条件运算符

    c#条件运算符 C# 条件运算符

    2023-02-25 C#教程

    C#条件运算符和||运算符测试与和或条件。!运算符表示不。以下代码使用and,not和or运算符创建布尔表达式。!cloudy(WeekDay || ...

  • c#switch case语句 C# if switch语句

    c#switch case语句 C# if switch语句

    2023-02-24 C#教程

    C# if switchif语句语法对于使用过程语言进行任何编程的任何人都应该是非常直观的:if (condition)statement(s) elsestatement(s...

  • c#预处理指令 C# 预处理器指令

    c#预处理指令 C# 预处理器指令

    2023-02-27 C#教程

    C# 预处理器指令预处理器指令为编译器提供有关代码区域的附加信息。最常见的预处理器指令是条件指令。例子:#define DEBUGclass ...

  • c#继承多个类 C# 继承

    c#继承多个类 C# 继承

    2023-02-24 C#教程

    C# 继承类可以从另一个类继承以扩展或定制原始类。继承一个类会重用该类中的功能。类只能从一个类继承。例子在这个例子中,我们...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部