我想出了这段代码,它在Flag Enumeration类型的变量中转换set标志,并将set flags作为整数返回.我想知道这是否是最佳方法.
枚举示例:
[Flags]
enum Status {
None = 0x0,
Active = 0x1,
Inactive = 0x2,
Canceled = 0x4,
Suspended = 0x8
}
将set标志转换为我想出的int数组的扩展方法:
public static class Extensions
{
public static int[] ToIntArray(this System.Enum o)
{
return o.ToString()
.Split(new string[] { ", " }, StringSplitOptions.None)
.Select(i => (int)Enum.Parse(o.GetType(), i))
.ToArray();
}
}Run Code Online (Sandbox Code Playgroud)
这就是我使用它的方式:
Status filterStatus = Status.Suspended | Status.Canceled;
int[] filterFlags = filterStatus.toIntArray();
foreach (int flag in filterFlags) {
Console.WriteLine("{0}\n", flag);
}
Run Code Online (Sandbox Code Playgroud)
它将输出:
4
8Run Code Online (Sandbox Code Playgroud)
如您所见,为了完成这项工作,我正在做以下事情: