Цикл через клавиши перечисления С# и значения

С учетом перечисления С#:

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 установлены на "Новые", "Старые" и "Свежие", а свойства "Число" равны 0, 1 и 2.

Как это сделать?

+7
источник поделиться
3 ответа

В классе Enum есть методы, которые вы ищете.

foreach(int i in Enum.GetValues(typeof(stuff)))
{
    String name = Enum.GetName(typeof(stuff), i);
    NewObject thing = new NewObject
    {
        Name = name,
        Number = i
    };
}
+10
источник

Вы можете использовать LINQ (как всегда):

List<NewObject> stuff = Enum.GetValues(typeof(stuffEnum)).Cast<stuffEnum>()
    .Select(s => new NewObject { Name = s.ToString(), Number = (int) s })
    .ToList();
+7
источник
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
+3
источник

Посмотрите другие вопросы по метке или Задайте вопрос