[英]How do you get a specific item in an enumeration by a variable integer in c#?
我有这个枚举列表
enum Month
{
January = 1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
}
我正在从名为 input 的控制台收集一个 integer,其值为 1-12。 如何让它打印出相应的月份? 例如:1 = 一月,6 = 六月。
感谢您的宝贵时间和帮助!
您可以将int
转换为您的枚举
var m = (Month)1;
Console.WriteLine(m.ToString());
但请记住,如果未定义枚举值,它只会打印 int。
或者你可以使用
var m = Enum.GetName(typeof(Month), 1);
如果未定义,它将返回null
我邀请您阅读有关枚举的文档
这是您问题的答案:
var input = Console.ReadLine();
int enumIntValue = int.Parse(input); // You can also use TryParse (safer).
Month month = (Month) enumIntValue; // You can use Enum.IsDefined before to check if the int value is valid for the enum.
Console.WriteLine(month); // print out the month.
另请阅读: TryParse , Enum.IsDefined
出于信息目的,要查看枚举中的所有文本值,您可以获得这样的值......
static void Main(string[] args)
{
var enumValues = Enum.GetValues(typeof(Month));
foreach (var enumValue in enumValues)
Console.WriteLine(enumValue);
}
您可以通过强制转换将 integer 值转换为相应的 Enum,然后获取其字符串表示形式:
var monthEnum = (Month)yourIntValue;
var strEnum = monthEnum.ToString();
请注意,如果您的yourIntValue
不是有效的枚举值(例如 0 或 13),则程序仍将运行,但 output 将变为 integer 值。
另请注意,获取月份名称的更好方法是使用CultureInfo
class :
// the current culture info, from your computer
var culture = CultureInfo.CurrentCulture;
// you can also specify a known culture
culture = CultureInfo.GetCultureInfo("en")
var monthName = culture.DateTimeFormat.GetMonthName(yourIntValue);
var input= Console.ReadLine();
Month month = 0;
if (Enum.TryParse(input, out month)) //Using try parse is safer
{
Console.WriteLine(month.ToString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.