c# 枚举

作者: 柒轩轩轩轩 | 来源:发表于2019-09-30 23:39 被阅读0次

枚举是一个特殊的值类型,它可以让你指定一组命名的数值常量

public enum BorderSide { Left, Right, Top, Button}
BorderSide topSide = BorderSide.Top;
bool isTop = (topSide == BorderSide.Top); //True

枚举类型的底层原理

  • 每个枚举都对应一个底层的整形数值(Enum.GetUnderlyingType())默认:
    1. 是int类型
    2. 0, 1, 2 。。。 会按照枚举成员的声明顺序自动赋值
  • 也可以指定其他的类型作为枚举的整数类型, 例如bytte:
    public enum BorderSide: byte{ Left, Right, Top, Bottom}
  • 也可以单独指定枚举成员对应的整数值
    public enum BorderSide: byte {Left = 1, Right = 2, Top = 10, Bottom = 11}
  • 也可以只指定其中默写成员的数值,未被赋值的成员将接着它前面已被赋值的成员的值递增

0

  • 在枚举表达式里,0数值会被编译器特殊对待, 它不需要显示的转换
BorderSide b = 0;
if (b == 0)...
  • 因为枚举的第一个成员通常被当做默认值,它的默认值是0
  • 组合枚举里,0没有flags

Flag Enum

  • 可以对枚举的成员进行组合
  • 为了避免歧义,枚举成员的需要显示的赋值,典型的就是使用2的乘幂
[Flags]
public enum BorderSides {None =0, Left = 1, Right = 2, Top = 4, Bottom = 8 }
  • 可以使用位操作符, | &
BorderSides leftRight = BorderSides.Left | BorderSides.Right;
if ((leftRight & BorderSides.Left)!=0){
  Console.WriteLine("Includes Lefts");
}
string formatted = leftRight.ToString(); //"Left, Right" (枚举成员名)

相关文章

  • Typescript(十二)Enum 枚举类型

    Typescript中的枚举(enum)可以参考C#中的枚举(enum)类型,毕竟都是微软开发的语言。 枚举这个数...

  • 理解C#中的枚举(深入思考)

    这篇文章主要介绍了理解C#中的枚举,本文讲解了枚举的优点、枚举说明、枚举的类型、枚举的使用建议等内容,需要的朋友可...

  • C#魔将-lesson_07-枚举

    枚举(Enum) 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值类型。换句话说,枚...

  • C#入门笔记(二)

    0x00 枚举 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值数据类型。 enum...

  • C#枚举

    下面的实例演示了枚举变量的用法 当上面的代码被编译和执行时,它会产生下列结果: 简单枚举 标志枚举这种位运算是非常...

  • C#枚举

    申明enum变量 枚举元素的默认基础类型是 int。 若要声明另一整型类型的枚举(如 byte),则请在后跟该类型...

  • c# 枚举

    枚举是一个特殊的值类型,它可以让你指定一组命名的数值常量 枚举类型的底层原理 每个枚举都对应一个底层的整形数值(E...

  • C#枚举类型操作归纳(二)

    C#编译器将枚举类型视为基元类型,所以可用操作符(==, !=, <, >, <=, >=, +, -, ^, &...

  • TS学习笔记(六):枚举

    枚举是组织收集有关联变量的一种方式,使用枚举我们可以定义一些带名字的常量,像 C# 和 Java 都有枚举数据类型...

  • Unity 学习,C#基础学习

    包含,C#字符串,枚举,集合,数组以及类,属性的设置 C#基本数据类型代码一:字符串!using UnityEng...

网友评论

      本文标题:c# 枚举

      本文链接:https://www.haomeiwen.com/subject/kjrzuctx.html