如果这是一个愚蠢的问题或者只是一个无聊的问题,我会向前道歉.此外,我将通过实际找到答案来证明这一点.我对复杂性不满意(因为这很无聊:))
题:
如何在C#2.0中以最简单最优的方式从枚举值数组创建位标志组合
示例代码(不确定这是我们在这里可以做的最好的):
enum MyEnum
{
    Apple = 0,
    Apricot = 1,
    Breadfruit = 2,
    Banana = 4
}
private int ConvertToBitFlags(MyEnum[] flags)
{
    string strFlags = string.Empty;
    foreach (MyEnum f in flags)
    {
        strFlags += strFlags == string.Empty ?
            Enum.GetName(typeof(MyEnum), f) :
            "," + Enum.GetName(typeof(MyEnum), f);
    }
    return (int)Enum.Parse(typeof(MyEnum), strFlags);
}
Run Code Online (Sandbox Code Playgroud)
    Mar*_*tos 11
int result = 0;
foreach (MyEnum f in flags)
{
    result |= f; // You might need to cast — (int)f.
}
return result;
Run Code Online (Sandbox Code Playgroud)
OTOH,你应该使用FlagsAttribute改进的类型安全:
[Flags]
enum MyEnum { ... }
private MyEnum ConvertToBitFlags(MyEnum[] flags)
{
    MyEnum result = 0;
    foreach (MyEnum f in flags)
    {
        result |= f;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)
更好的是,通过使用FlagsAttribute你可以避免MyEnum[]完全使用,从而使这种方法多余.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3647 次  |  
        
|   最近记录:  |