C#学习之枚举

本文探讨了C#中的枚举类型,包括一般枚举和标志枚举的使用。通过示例代码,展示了如何在C#项目中创建和应用这两种枚举,帮助读者深化对C#枚举概念的理解。
摘要由CSDN通过智能技术生成

枚举分为一般枚举和标志枚举两类。

新建控制台应用程序,源码如下

示例1:一般枚举

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

namespace _03枚举
{
    class Program
    {
        static void Main(string[] args)
        {
            
            //1.普通枚举中每个值都是互斥的。
            //2.枚举中的每个值都有一个对应数值来表示。
            //2.1默认数值是整型int,从0开始,依次递增。
            //2.2可以手动设置每个枚举对应的整数。
            //3.枚举在编译完成后就已经用对应的数值常量来表示了。
            Console.WriteLine((int)UserState.QMe);
            Console.WriteLine((int)UserState.OnLine);
            Console.WriteLine((int)UserState.OffLine);
            Console.WriteLine((int)UserState.Busy);
            Console.WriteLine((int)UserState.Hide);
            Console.WriteLine((int)UserState.Left);

            //1>将枚举转换为数值:(int)MyColor.Red;
            //2>将枚举转换为字符串:MyColor.Red.ToString()
            //3>将字符串转换为枚举:MyColor mc = (MyColor)Enum.Parse(typeof(MyColor), "Red");

            //A.把枚举转换为字符串
            string str = UserState.Busy.ToString();
            Console.WriteLine("A.把枚举转换为字符串:"+str);

            //B.把字符串转换为枚举类型
            string meiJu = "QMe";
            //强制类型转换
            UserState state = (UserState)Enum.Parse(typeof(UserState), meiJu);
            Console.WriteLine("B.把字符串转换为枚举类型:"+(int)state);

            Console.ReadKey();

        }
    }
    /// <summary>
    /// 定义QQ状态枚举类型
    /// </summary>
    /// 默认枚举值都是用int替代的,但是也可以指定具体数据类型
    /// 如:byte(0-255)表示,限制类枚举中的数据类型
    /// 枚举基础类型可以是除了char以外的任何整型,准许使用的枚举类型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。
    public enum UserState
    {
        //一般枚举中的每个值都是互斥的
        QMe,
        OnLine = 100,
        OffLine,
        Busy,
        Hide = 250,
        Left
    }
}
输出结果:


示例2:标志枚举

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

namespace _04标志枚举
{
    class Program
    {
        static void Main(string[] args)
        {
            FileInfo info = new FileInfo(@"F:\暑假任务\23种C#设计模式.pdf");
            Console.WriteLine(info.Attributes);
            //代码修改属性,采用逻辑运算或(|)进行判断
            //00001 状态1
            //00010 状态2
            //00011 结果
            //info.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden | FileAttributes.Archive | FileAttributes.Compressed;
            //info.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden;

            //定义一个“高富帅”
            GoodPeople lyh = GoodPeople.高 | GoodPeople.富 | GoodPeople.帅;
            //GoodPeople hh = GoodPeople.优秀男;
            //当前二进制:00111
            //验证lyh的枚举中是否具有“帅”,这一项。采用“&逻辑与”运算符
            //00100 状态1
            //00111  状态2
            //00100 结果
            if ((lyh & GoodPeople.帅) == GoodPeople.帅)
            {
                Console.WriteLine("这小伙很帅~~~");
            }
            else 
            {
                Console.WriteLine("一点都不帅。。。。");
            }

            //=================判断一个文件是否隐藏=================
            FileInfo info1 = new FileInfo(@"F:\暑假任务\23种C#设计模式.pdf");
            if ((info1.Attributes& FileAttributes.Hidden)== FileAttributes.Hidden)
            {
                 Console.WriteLine("文件时隐藏的!");
            }
            else
            {
                Console.WriteLine("不隐藏!!!");
            }
            Console.ReadKey();
        }
    }

    [Flags] //标志枚举,加上这个特性后枚举类型.ToString(),返回的就是文字形式,不是数字了
    public enum GoodPeople 
    {
        高=1,//00001
        富=2,//00010
        帅=4,//00100
        白=8,//01000
        美=16,//10000
        优秀男 = GoodPeople.高 | GoodPeople.富 | GoodPeople.帅,
        优秀女 = GoodPeople.白 | GoodPeople.富 | GoodPeople.美
    }
输出结果如下:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值