如何使用枚举的组合值

有时我们需要将枚举定义为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

时间: 2024-09-11 07:10:51

如何使用枚举的组合值的相关文章

.NET获取枚举DescriptionAttribute描述信息性能改进的多种方法_实用技巧

一. DescriptionAttribute的普通使用方式 1.1 使用示例 DescriptionAttribute特性可以用到很多地方,比较常见的就是枚举,通过获取枚举上定义的描述信息在UI上显示,一个简单的枚举定义: public enum EnumGender { None, [System.ComponentModel.Description("男")] Male, [System.ComponentModel.Description("女")] Fem

HDU 4353 枚举

题意:给出n个点,为商人要购买的点,m个点为金矿的位置.问如何使够买三个点或三个以上的点围成的多边形面积与多边形内金矿的数量的比值最小. 这题很容易想到比值最小的肯定是三角形和在三角形内的点的数量想比.虽然我没想到.然后很容易想到四重循环来找最小的比值但是会超时,所以需要预处理一下,先把两组点按照x轴排序,枚举两个n点,针对于每组点组成的线段选线段正上方的m点,存入数组中.然后再进行n^3循环枚举3个n内的点,长线段上的m点数-两条短线段的m点数的绝对值就是三角形内的点数.为什么是绝对值,因为长

dll-有关VC6DLL模块枚举问题

问题描述 有关VC6DLL模块枚举问题 我照着书上写了一串代码:但是DLL名称没有枚举出来,想问一下大家知道怎么回事吗? #include ""iostream""#include ""windows.h""#include ""stdio.h""using namespace std; void main(){ DWORD *PEB=NULL *LDR=NULL *Flink=NULL

【转】java枚举使用详解

在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数据集",春夏秋冬四个数据元素组成了四季的"数据集". 在Java中如何更好的使用这些"数据集"呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法. Java代码   package com.ljq.test;      /**   * 枚举用法详解   *

hdu 1077 Catching Fish 计算几何+暴力枚举

   简单的暴力枚举,枚举两个点在圆上,用向量法求下圆心.复杂度o(n^3),但数据量只有300 /* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib> #include <c

HDU 4380 预处理枚举

题意:给出n个房子m个矿问从n个房子选三个组成的三角形内部矿数为奇数有多少种选法. 先预处理一下每条线段正上方有多少个点,然后在枚举三条线段就可以了. #include <iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; struct point { long long x,y; }; int

HDU 3823 暴力枚举

题意:给出A,B, 找出一个最小的m,使A+m,B+m为连续的两个素数. 枚举2000W以内的素数暴力找. #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define maxn 21000000 bool isprime[maxn]; long long prime[maxn],nprime; void getp

HDU 4569 长沙E题 枚举

题意:给你函数 f(x) = anxn +...+ a1x +a0 最多N就4位,输入任意一个x使f(x)%(prime*prime)=0. 这题枚举就可以,首先如果满足f(x)%(prime*prime)=0必须要满足f(x)%prime=0这个条件. 那么应该先找到一个x满足f(x)%prime=0,然后在(x-prime*prime)区间内x+=prime(保证f(x)%prime=0总成立),如果有f(x)%(prime*prime)=0那么就输出. 找出一个x在(0-prime)区间内

EMF介绍系列(四、枚举类型、自定义类型和Map)

除了普通的类(接口)以外,在类图里可以定义一些特殊的元素,比较常见的是枚举类型 .自定义类型,它们对于一个完整可用的模型也是必不可少的,这篇帖子主要介绍EMF里它们 的使用方法.另外,由于EMF对Map的支持比较特别,所以在这里也简要介绍一下Map类型的定 义方法. 枚举类型 继续前面帖子的例子,现在要为产品增加一个评分属性,评分值可以是好中差之一,像这 样属性值只能是有限几个值之一的属性就应该定义为枚举类型(Enumeration).在类图里首 先创建一个名为Score的枚举类型,然后为它增加