架构深渊

慢慢走进程序的深渊……关注领域驱动设计、测试驱动开发、设计模式、企业应用架构模式……积累技术细节,以设计架构为宗。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

如何使用枚举的组合值

Posted on 2008-10-19 19:39  chen eric  阅读(1256)  评论(0编辑  收藏  举报
  有时我们需要将枚举定义为1,2,4,8.......的值,这样当传入一个3,那么就是表示1,2的组合,如果传入7,那就表示1,2,4的组合。要实现这种功能我们需要用到FlagsAttribute。

  有时我们需要将枚举定义为1,2,4,8.......的值,这样当传入一个3,那么就是表示1,2的组合,如果传入7,那就表示1,2,4的组合。要实现这种功能我们需要用到FlagsAttribute。具体用法如下:

  1.定义Enum。

以下是引用片段:
[Flags]
public enum FormType
{
    Reimburse
=1,
    Payment
=2,
    Precharge
=4,
    PO
=8
}

  2.组合枚举值的判断:

public static void Print(FormType ft)
    {
        if((ft&FormType.Reimburse)==FormType.Reimburse)//与判断
        {
            Console.WriteLine("Reimburse");
        }
        if((ft&FormType.Payment)==FormType.Payment)
        {
            Console.WriteLine("Payment");
        }
        if((ft&FormType.Precharge)==FormType.Precharge)
        {
            Console.WriteLine("Precharge");
        }
        if((ft&FormType.PO)==FormType.PO)
        {
            Console.WriteLine("PO");
        }
        Console.WriteLine("End");
    }

  3.生成组合枚举:

以下是引用片段:
FormType ft=FormType.Reimburse|FormType.PO;
Print(ft);

  运行输出的结果就是:

  Reimburse

  PO