测试篇 c#枚举类型怎么用

有很多人写的教程都没有像我一样用代码简单说明...
所以我这里贴出来一下,免得我忘记...嘻嘻

枚举类型怎么写

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

namespace 枚举类型怎么写
{
    class Program
    {
        //定义枚举
        [Flags]                       //.ToString()打印的时候是是名称而不是值噢!
        public enum ServicePut : byte //继承是为了限制大小
        { 
            未分配       = 0,
            检查         = 1,
            安装服务     = 2,
            启动服务     = 4,
            卸载服务     = 8,
            验证服务状态 = 16,
            停止服务     = 32,
            嘻嘻         = 64,
            哈哈         = 128,
        }
        public static void DeployService(ServicePut jsp)
        {
            if (jsp == ServicePut.未分配)
            {
                Console.WriteLine("未分配");
                return;
            }
            if ((jsp & ServicePut.检查) == ServicePut.检查)
                Console.WriteLine("检查");
            if ((jsp & ServicePut.安装服务) == ServicePut.安装服务)
                Console.WriteLine("安装服务");
            if ((jsp & ServicePut.启动服务) == ServicePut.启动服务)
                Console.WriteLine("启动服务");
            if ((jsp & ServicePut.卸载服务) == ServicePut.卸载服务)
                Console.WriteLine("卸载服务");
            if ((jsp & ServicePut.验证服务状态) == ServicePut.验证服务状态)
                Console.WriteLine("验证服务状态");
            if ((jsp & ServicePut.停止服务) == ServicePut.停止服务)
                Console.WriteLine("停止服务");
            if ((jsp & ServicePut.嘻嘻) == ServicePut.嘻嘻)
                Console.WriteLine("嘻嘻");
            if ((jsp & ServicePut.哈哈) == ServicePut.哈哈)
                Console.WriteLine("哈哈");
        }

        //主函数
        static void Main(string[] args)
        {
            DeployService(ServicePut.未分配);
            DeployService(ServicePut.检查);
            DeployService(ServicePut.安装服务);
            DeployService(ServicePut.启动服务);
            DeployService(ServicePut.卸载服务);
            DeployService(ServicePut.验证服务状态);
            DeployService(ServicePut.停止服务);
            DeployService(ServicePut.嘻嘻);

            Console.WriteLine("--------------------------");
            DeployService(ServicePut.检查 | ServicePut.安装服务);
            DeployService(ServicePut.安装服务 | ServicePut.启动服务); //这里可以把两个值按照按位运算判断,也就是可以同时输出两个项
            DeployService(ServicePut.安装服务 | ServicePut.停止服务);
            DeployService(ServicePut.验证服务状态 | ServicePut.停止服务);
            DeployService(ServicePut.启动服务 | ServicePut.停止服务);
            DeployService(ServicePut.哈哈 | ServicePut.启动服务);
            DeployService(ServicePut.嘻嘻 | ServicePut.停止服务);

            Console.ReadKey();
        }
    }
}

原理

//转为二进制
Convert.ToString(2, 2);
Convert.ToString(4, 2);
Convert.ToString(6, 2);


010 = 2
100 = 4
_______ |按位或,进行二进制计算(跟小学加法竖式一样),
110 = 6

遍历枚举

1 通过枚举的名称获取值.

2 通过值获取名称.

但是只要知道了 Enum.GetValues() 的操作就可以了

foreach (var item in Enum.GetValues(typeof(ServicePut))) //遍历这个枚举类型
{
    if (item.ToString() == "验证服务状态")  //获取枚举的每项的名称
    {
        var itemName = (ServicePut)item;  //然后强转成枚举类型,可作为输出
        return itemName;
    }
}

(完)

posted @ 2019-12-13 10:14  惊惊  阅读(1786)  评论(0编辑  收藏  举报