zoukankan      html  css  js  c++  java
  • .net知识和学习方法系列(二十一)CLR枚举

    enum Complexion//肤色

            {

              White,

              Black,

              Yellow

            }

    这是一个枚举,没有什么特别。

    说一下枚举的特点吧,其实枚举就是一系列符号和一系列对应的值,在上面的例子中,枚举的基类型是Int32类型,这是默认的类型,对应的各个枚举项,White=0,Black=1;Yellow=2;这就是一个符号与值的对应,CLR在用枚举时,是用的值,并不是符号,符号是开发人员用来能明确其值的含义的。

    所有枚举都是从System.Enum派生来的,System.Enum又是从System.ValueType派生来的,System.ValueType的父类是System.Object。即然从System.Enum派生的,当然枚举都属于值类型了。

    现在我们看看IL中的Complexion枚举是个什么样子

     

    在IL中我们能看到它是从System.Enum继承的,还会发现所有的符号都是一个常量,即static  literal这个标识。

    其实可以用这样一个C#代码来说明枚举Complexion

    Internal struct Complexion:System.Enum

    {

     public const Complexion White==(Complexion)0;

     public const Complexion Black==(Complexion)1;

     public const Complexion Yellow==(Complexion)2;

     public Int32 value_;

    }

    当然,上面的代码如果写到C#环境中是编译不过的,因为System.Enum是个特殊的类,不允许派生子类型。

    在上面的伪代码中,可以看到,每个符号(White,Black,Yellow),都是一个常量,关且是Complexion类型的。

    同时在Complexion内部还有一个常量,Value_,从有关资料查询说是包含一个Complexion的符号的值。同时期待了解这个变量的准确用途的朋友告知。
    ****欢迎关注我的asp.net core系统课程****
    《asp.net core精要讲解》 https://ke.qq.com/course/265696
    《asp.net core 3.0》 https://ke.qq.com/course/437517
    《asp.net core项目实战》 https://ke.qq.com/course/291868
    《基于.net core微服务》 https://ke.qq.com/course/299524
  • 相关阅读:
    04_移动端-伪元素选择器
    03_移动端-结构伪类选择器
    02_移动端-属性选择器
    Dva+Antd创建React项目(一)
    Windows 10 使用打印机扫描
    中间件-redis
    #期望dp#51nod 2015 诺德街
    Codeforces Round #685 (Div. 2)
    USACO 4.2
    #保序回归问题,单调栈,二分#洛谷 5294 [HNOI2019]序列
  • 原文地址:https://www.cnblogs.com/axzxs2001/p/1303351.html
Copyright © 2011-2022 走看看