C# 将C中枚举的子集传递给方法?

C# 将C中枚举的子集传递给方法?,c#,enumeration,C#,Enumeration,我想定义一个方法,如果enum第一个参数的子集包含enum元素第二个元素,则该方法将返回true或false 换句话说,拥有一个类似以下的枚举: public enum type { INST, INST_NAME, OPEN_BR, CLOSED_BR}; 我想定义一个类似这样的方法: public bool check (IEnumerable <type> subset , type t) {if(subset.Contains t) r

我想定义一个方法,如果enum第一个参数的子集包含enum元素第二个元素,则该方法将返回true或false

换句话说,拥有一个类似以下的枚举:

public enum type { INST, INST_NAME, OPEN_BR, CLOSED_BR};
我想定义一个类似这样的方法:

public bool check (IEnumerable <type> subset , type t)
       {if(subset.Contains t)
            return true;
        else
            return false;
       }
然后用以下词语来称呼它:

check(new List<type>{INST, INST_NAME},type.INST);
因为列表中包含INST,所以返回true。所以问题是:假设这个方法有效,您知道实现这个方法的更优雅的方法吗


谢谢你的回答

将[Flags]属性添加到枚举中。将每个选项设置为由排他位表示

例如:

[Flags]
enum LogLevel
{
    App = 1 << 0,
    Exception = 1 << 1,
    Warning = 1 << 2,
    Measurement = 1 << 3,
    User = 1 << 4
}
示例用法:

LogLevel logLevels = LogLevel.App | LogLevel.Warning | LogLevel.Exception;
bool logWarnings = IsSet(logLevels, LogLevel.Warning);

您不需要单独的方法来简化此过程-只需使用内置的Contains扩展方法:

var subset = new List<type>{INST, INST_NAME};

bool check = subset.Contains(type.INST);

为什么不检查枚举的值是否为空?错误,null。在VB.net中没有等效项。SubsetOfType的类型是什么?要么我不明白你想做什么,要么你想用Enums做一些真正错误的事情。你可以用两种方法:1。传递枚举列表并检查,或2。如果合适,将枚举定义为标志。不需要定义方法,它已存在:。返回子集Containst;
var subset = new List<type>{INST, INST_NAME};

bool check = subset.Contains(type.INST);