我有以下的在我的代碼enum
:遍歷的標誌枚舉值 - 但保留順序
[Flags]
public enum Column
{
FirstName = 1 << 0,
LastName = 1 << 1,
Address = 1 << 2,
}
現在我有可以採取enum
的方法。
public void ParseColumns(Column col)
{
//do some parsing...
}
這種方法可以這樣調用:
ParseColumns(Column.FirstName | Column.LastName);
ParseColumns(Column.LastName);
ParseColumns(Column.LastName | Column.Address | Column.FirstName);
ParseColumns(Column.Address | Column.FirstName);
我現在需要通過值迭代,但保持在其中enum
傳遞給方法的順序。
我發現以下方法給了我遍歷它們的可能性,但遺憾的是,它返回了在Enum
本身中定義的順序,而不是我如何調用方法。 Iterate over values in Flags Enum?
'Column.FirstName | Column.LastName'和'Column.LastName | Column.FirstName'的值完全相同。你所要求的就像撥打電話'Foo(1 + 1)'與'Foo(2)'有不同的表現。 – hvd 2014-10-31 14:07:03
'ParseColumns()'只接收一個值(在你的情況下它將是'int'),它顯然不包含任何* order *信息。您將需要使用包含順序('List',數組等)或提供順序信息作爲另一個參數的合適類型(例如,'string'包含數字,''132「'將指定'FirstName'>''地址「>」姓氏「順序)。 – Sinatr 2014-10-31 14:17:32