迭代Flags Enum中的值 - 但保留顺序

Ran*_*dom 2 c# enums

我的enum代码中有以下内容:

[Flags]
public enum Column
{
    FirstName = 1 << 0,
    LastName = 1 << 1,
    Address = 1 << 2,
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个可以采取的方法enum.

public void ParseColumns(Column col)
{
    //do some parsing...
}
Run Code Online (Sandbox Code Playgroud)

可以像这样调用此方法:

ParseColumns(Column.FirstName | Column.LastName);
ParseColumns(Column.LastName);
ParseColumns(Column.LastName | Column.Address | Column.FirstName);
ParseColumns(Column.Address | Column.FirstName);
Run Code Online (Sandbox Code Playgroud)

我现在需要遍历值,但保持enum传递给方法的顺序.

我找到了下面的方法,它让我可以迭代它们,但遗憾的是它返回它在Enum自身中定义的顺序,而不是我如何调用方法. 迭代Flags Enum中的值?

Jon*_*eet 8

我现在需要迭代值,但保持枚举传递给方法的顺序.

没有这样的概念.该|运营商不具有保持有序的任何方式.换句话说,想象我们有:

public void Foo(int x)
Run Code Online (Sandbox Code Playgroud)

你用它来调用它:

Foo(1 + 4)
Foo(2 + 3)
Run Code Online (Sandbox Code Playgroud)

您期望它如何区分?如果需要使用特定的保留顺序传递单独的值,则应该使用:

public void ParseColumns(params Column[] columns)
Run Code Online (Sandbox Code Playgroud)

...此时你可能想要避免它成为一个标志枚举.