• 枚举


         枚举是一种复合值类型,使用关键字enum定义,主要用于表示一组逻辑上相关联的项的组合。

    枚举用来定义一个类型,其中包含提供的限定值集合中的一个值。

    和结构类型不同,枚举类型要求其成员只能是整数类型。

     

    定义枚举:

        enum typeName

        {

            value1,

            value2,

            value3,

            ...

            valueN

    }

    声明枚举类型变量:

    typeName varName;

    赋值:

    varName = typeName.value1;

     

        enum Weekday

        {

            Sunday,

            Monday,

            Tuesday,

            Wednesday,

            Thursday,

            Friday,

            Saturday

        }

     

    枚举使用一个基本类型来存储,枚举类型可以提供的每个值都为该类型的一个值。在默认情况下,该类型为int。在枚举声明中添加类型,可以指定其他基本类型:

    enum typeName : unterlyingType

        {

            value1,

            value2,

            value3,

            ...

            valueN

    }

     

    枚举的基本类型可以是 byte、sbyte、short、ushort、int、uint、long和ulong。

     

        enum Weekday : byte

        {

            Sunday,

            Monday,

            Tuesday,

            Wednesday,

            Thursday,

            Friday,

            Saturday

    }

     

    在默认情况下,C#编译器默认枚举中的第一个元素对应的整数值为0,其后的每个元素值一次递增1,自动赋给对应的基本类型值,也可以使用 = 运算符指定每个枚举的实际值,为枚举类型的变量所赋的值可以不在限定范围之内。

    enum typeName

        {

            value1 = actualVal1,

            value2 = actualVal2,

            value3 = actualVal3,

            ...

            valueN = actualValN

    }

    没有赋值的任何值都会自动获得一个初始值——比最后一个明确声明的值大1开始的序列。

     

        enum Weekday

        {

            Sunday = 1,

            Monday,

            Tuesday = 5,

            Wednesday,

            Thursday,

            Friday,

            Saturday

        }

     

    需要注意的是,结构类型是由一组不同类型的成员组成的新的数据类型,结构类型的变量包含了所有成员的值;而枚举类型只是列举出各个成员,枚举类型的变量在某一时刻只能取其中某个成员的值。

    对枚举成员的访问通过“.”进行,只不过不是通过枚举类型变量,而是通过枚举类型的名称。

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

     

    namespace EnumExample

    {

        class Program

        {

            static void Main(string[] args)

            {

                Weekday w1;

                w1 = Weekday.Sunday;

                Console.WriteLine(w1);

     

                w1 = w1 + 1;

                Console.WriteLine(w1);

     

                w1 = (Weekday)4;

                Console.WriteLine(w1);

     

                w1 = (Weekday)100; // 为枚举变量所赋在限定范围之外

                Console.WriteLine(w1); // 100

     

                int i = (int)Weekday.Friday;

                Console.WriteLine(i);

            }

        }

     

        enum Weekday

        {

            Sunday,

            Monday,

            Tuesday,

            Wednesday,

            Thursday,

            Friday,

            Saturday

        }

    }

    执行结果

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

     

    namespace EnumExample

    {

        class Program

        {

            static void Main(string[] args)

            {

                Weekday w1;

                w1 = Weekday.Sunday;

                Console.WriteLine(w1);

     

                //w1 = w1 + 1;

                //Console.WriteLine(w1);

     

                //w1 = (Weekday)4;

                //Console.WriteLine(w1);

     

                //w1 = (Weekday)100; // 为枚举变量所赋在限定范围之外

                //Console.WriteLine(w1); // 100

     

                //int i = (int)Weekday.Friday; //枚举值转化为其他类型

                //Console.WriteLine(i);

            }

        }

     

        enum Weekday

        {

            Sunday = 1,

            Monday = 1,

            Tuesday,

            Wednesday,

            Thursday,

            Friday,

            Saturday

        }

    }

     执行结果:

            

     

       枚举类型转换

             把枚举类型转化为其他类型,必须进行显示转换。

    int i = (int)Weekday.Friday;

    要获得枚举的字符值,可以使用Convert.ToString(),也可使用变量自身的ToString()。

    string strSaturday = Convert.ToString(Weekday.Saturday);

             //string strSaturday = Weekday.Saturday.ToString();

    string类型转换为枚举值,Enum.Parse()

              string strWednesday = "Wednesday";

              Weekday w2 = (Weekday)Enum.Parse(typeof(Weekday), strWednesday);

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

     

    namespace EnumExample

    {

        class Program

        {

            static void Main(string[] args)

            {

                Weekday w1;

                w1 = Weekday.Sunday;

                Console.WriteLine(w1);

     

                w1 = w1 + 1;

                Console.WriteLine(w1);

     

                w1 = (Weekday)4;

                Console.WriteLine(w1);

     

                w1 = (Weekday)100; // 为枚举变量所赋在限定范围之外

                Console.WriteLine(w1); // 100

     

                int i = (int)Weekday.Friday;

                Console.WriteLine(i);

     

                // 枚举类型转换为字符串类型

                string strSaturday = Convert.ToString(Weekday.Saturday);

                //string strSaturday = Weekday.Saturday.ToString();

                Console.WriteLine(strSaturday);

     

                // 字符串类型转换为枚举类型

                string strWednesday = "Wednesday";

                Weekday w2 = (Weekday)Enum.Parse(typeof(Weekday), strWednesday);

                Console.WriteLine(w2);

            }

        }

     

        enum Weekday

        {

            Sunday,

            Monday,

            Tuesday,

            Wednesday,

            Thursday,

            Friday,

            Saturday

        }

    }

    执行结果:

     

     

    结构与枚举的异同:

    1、 结构类型是由一组不同类型的成员所组成的新的数据类型,结构类型的变量值包含了所有成员的值;而枚举类型只是列举出各个成员,枚举类型的变量在某一时刻只能取其中某个成员的值。

    2、 对结构成员的访问通过结构类型变量,而对枚举成员的访问则通过枚举类型的名称。

     

     

  • 相关阅读:
    【CITE】当类库项目中无法使用Application.StartupPath的时侯 (注:主要是在进行反射读取文件的时候!!)
    设置pictureBox的边框颜色
    怎么在Form1调用Form2中的成员?
    【CITE】DrawImage方法详解(转)
    Python-正则表达式实现计算器功能
    Python-面向对象进阶
    Python基础-封装与扩展、静态方法和类方法
    Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性
    Python基础-继承与派生
    Python基础-月考
  • 原文地址:https://www.cnblogs.com/libingql/p/1690917.html
Copyright © 2020-2023  润新知