循环通过C#枚举';s键的AND值

本文关键字:键的 AND 枚举 循环 | 更新日期: 2023-09-27 18:30:04

给定C#枚举:

public enum stuffEnum: int
{
    New = 0,
    Old = 1,
    Fresh = 2
}

如何循环使用它,以便在单个循环中复制键及其值?类似于:

foreach(var item in stuffEnum)
{
    NewObject thing = new NewObject{
       Name = item.Key,
       Number = item.Value
    }
}

因此,您最终会得到3个对象,它们的Name属性设置为"New"、"Old"answers"Fresh",Number属性设置为0、1和2。

我该怎么做?

循环通过C#枚举';s键的AND值

Enum类具有您要查找的方法。

foreach(int i in Enum.GetValues(typeof(stuff)))
{
    String name = Enum.GetName(typeof(stuff), i);
    NewObject thing = new NewObject
    {
        Name = name,
        Number = i
    };
}

您可以使用LINQ(几乎一如既往):

List<NewObject> stuff = Enum.GetValues(typeof(stuffEnum)).Cast<stuffEnum>()
    .Select(s => new NewObject { Name = s.ToString(), Number = (int) s })
    .ToList();
foreach (var enumValue in Enum.GetValues(typeof(StuffEnum)))
{
    Console.WriteLine("Name: {0}, Value: {1}", enumValue, (int)enumValue);
}

中的结果

Name: New, Value: 0
Name: Old, Value: 1
Name: Fresh, Value: 2