gpt4 book ai didi

c# - 如何获得复杂的枚举值字符串表示

转载 作者:可可西里 更新时间:2023-11-01 09:13:54 26 4
gpt4 key购买 nike

假设我有这个枚举:

[Flags]
public enum SomeType
{
Val1 = 0,
Val2 = 1,
Val3 = 2,
Val4 = 4,
Val5 = 8,
Val6 = 16,
All = Val1 | Val2 | Val3 | Val4 | Val5 | Val6
}

和一些变量:

SomeType easyType = SomeType.Val1 | SomeType.Val2;
SomeType complexType = SomeType.All;

如果我想遍历第一个枚举的值,我可以简单地做:

foreach(string s in easyType.ToString().Split(','))
{ ... }

但是,当我尝试对“complexType”应用相同的方法时,我得到值“All”,这当然是有效的,因为它也是枚举的可能值之一。但是,有没有一种巧妙的方法可以实际查看 SomeType.All 创建的值是什么?我知道我可以像这样对所有值进行手动循环:

if(complexType.HasFlag(ManualType.Val1) && ...

最佳答案

var result = string.Join(",",
Enum.GetValues(typeof(SomeType))
.Cast<SomeType>()
.Where(v => complexType.HasFlag(v)));

你可以写一个扩展方法来避免重复自己。

关于c# - 如何获得复杂的枚举值字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com