我的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中的值?
我现在需要迭代值,但保持枚举传递给方法的顺序.
没有这样的概念.该|运营商不具有保持有序的任何方式.换句话说,想象我们有:
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)
...此时你可能想要避免它成为一个标志枚举.
| 归档时间: |
|
| 查看次数: |
596 次 |
| 最近记录: |