鉴于C#enum:
public enum stuffEnum: int
{
New = 0,
Old = 1,
Fresh = 2
}
Run Code Online (Sandbox Code Playgroud)
如何以一种我可以在一个循环中复制键及其值的方式循环它?就像是:
foreach(var item in stuffEnum)
{
NewObject thing = new NewObject{
Name = item.Key,
Number = item.Value
}
}
Run Code Online (Sandbox Code Playgroud)
因此,最终会得到3个对象,其Name属性设置为"New","Old"和"Fresh",Number属性设置为0,1和2.
我该怎么做呢?
小智 16
Enum类具有您正在寻找的方法.
foreach(int i in Enum.GetValues(typeof(stuff)))
{
String name = Enum.GetName(typeof(stuff), i);
NewObject thing = new NewObject
{
Name = name,
Number = i
};
}
Run Code Online (Sandbox Code Playgroud)
您可以使用LINQ(几乎总是如此):
List<NewObject> stuff = Enum.GetValues(typeof(stuffEnum)).Cast<stuffEnum>()
.Select(s => new NewObject { Name = s.ToString(), Number = (int) s })
.ToList();
Run Code Online (Sandbox Code Playgroud)
foreach (var enumValue in Enum.GetValues(typeof(StuffEnum)))
{
Console.WriteLine("Name: {0}, Value: {1}", enumValue, (int)enumValue);
}
Run Code Online (Sandbox Code Playgroud)
结果是
Name: New, Value: 0
Name: Old, Value: 1
Name: Fresh, Value: 2
Run Code Online (Sandbox Code Playgroud)