小编Cam*_*eri的帖子

C#将flag枚举类型的变量中的set标志转换为整数数组

我想出了这段代码,它在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
8
Run Code Online (Sandbox Code Playgroud)

如您所见,为了完成这项工作,我正在做以下事情:

  1. 将变量转换为字符串.它输出的内容如下:Suspended,Cancelled
  2. 将该字符串拆分为字符串数组:{"Suspended","Canceled"}
  3. 使用Enum.Parse将该字符串转换为枚举值. …

c# linq string enumeration

10
推荐指数
1
解决办法
8207
查看次数

标签 统计

c# ×1

enumeration ×1

linq ×1

string ×1