9.枚举

语法

[public] enum 枚举名{
    值1,
    值2,
    值3,
    ...
}

public:访问修饰符,public权限最高,公共的,哪都可访问
enum:声明枚举的关键字

一般将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。
如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo {

    //声明一个枚举Gender
    public enum Gender {
        男,
        女
    }


    class Program {
        static void Main(string[] args) {


            Gender gender = Gender.男;
      

            Console.WriteLine(gender);
            Console.ReadKey();

        }
    }
}

枚举类型和int类型的相互转换

枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换。

枚举类型转为int类型

如下例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo {

    //声明一个枚举Season
    public enum Season {
        Spring,
        Summer,
        Autumn,
        Winter
    }


    class Program {
        static void Main(string[] args) { 


            //枚举类型默认可以和int类型相互转换
            Console.WriteLine((int)Season.Spring);
            Console.WriteLine((int)Season.Summer);
            Console.WriteLine((int)Season.Autumn);
            Console.WriteLine((int)Season.Winter);
            Console.ReadKey();

        }
    }
}

运行:

当将Spring改为2时Spring=2,运行结果如下:

当将Spring=2Autumn=5时,运行结果如下:

综上,在枚举中的值转换为int类型时默认是从0开始的,但当给枚举中的某个值赋了int类型的值后,如Spring赋值为2后,其后面的值,在转化为int类型的值时,是从2开始,后面依次加1。

int类型转为枚举类型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo {

    //声明一个枚举Season
    public enum Season {
        Spring,
        Summer,
        Autumn,
        Winter
    }


    class Program {
        static void Main(string[] args) {


            //枚举类型默认可以和int类型相互转换
            int number = 2;
            Season season = (Season)number;

            int number2 = 7;
            Season season2 = (Season)number2;

            Console.WriteLine("season:"+season);
            Console.WriteLine("season2:"+season2);
            Console.ReadKey();

        }
    }
}

运行结果:

当number=2时,转换为枚举的值为Autumn,而当number2=7,输出仍然为7。这是因为7在枚举中没有值相对应,转换不了,所以直接输出原来的数字。

枚举类型与字符串类型的相互转换

枚举类型转为字符串类型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo {

    //声明一个枚举Season
    public enum Season {
        Spring,
        Summer,
        Autumn,
        Winter
    }


    class Program {
        static void Main(string[] args) {


            //所有类型都能调用ToString()转换为string类型
            Season season = Season.Spring;
            string s = season.ToString();

            Console.WriteLine(s);  
            Console.ReadKey();

        }
    }
}

运行结果:

字符串类型转化为枚举类型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo {

    //声明一个枚举Season
    public enum Season {
        Spring,
        Summer,
        Autumn,
        Winter
    }


    class Program {
        static void Main(string[] args) {


            
            string s = "0";

            Season season=(Season)Enum.Parse(typeof(Season), s);

            Console.WriteLine(season);  
            Console.ReadKey();

        }
    }
}

运行结果:

当转换的字符串是数字时,就算枚举中没有,也不会抛异常,而会直接显示出数字。当转换的字符串是文本时,如果枚举中没有,则会抛出异常。

原文地址:https://www.cnblogs.com/lz32158/p/12815361.html