C# 使用枚举作为变量(?)

C# 使用枚举作为变量(?),c#,enums,console,switch-statement,C#,Enums,Console,Switch Statement,我对控制台中的一些简单代码有问题。准确地说,我创建了一个名为Year的public enum,其中包含4个季节(显而易见)。我希望程序在开始时询问一年中的季节是什么,然后生成每个选项的答案。问题是我不知道如何将字符串输入转换为此枚举的每个选项。如果我给你看代码(很短),也许会更清楚 我想这样做,但不知道在这个switch语句中放什么,因为我不能把字符串“input”放在那里。按照我的想法可能吗?您可以使用Enum类之一解析字符串,并尝试将字符串解析为Enum 特别是,您可以在此eay中使用typ

我对控制台中的一些简单代码有问题。准确地说,我创建了一个名为
Year
public enum
,其中包含4个季节(显而易见)。我希望程序在开始时询问一年中的季节是什么,然后生成每个选项的答案。问题是我不知道如何将字符串输入转换为此枚举的每个选项。如果我给你看代码(很短),也许会更清楚


我想这样做,但不知道在这个switch语句中放什么,因为我不能把字符串“input”放在那里。按照我的想法可能吗?

您可以使用
Enum
类之一解析字符串,并尝试将字符串解析为
Enum

特别是,您可以在此eay中使用typed方法
TryParse

var ignoreCase=true;//决定这个
if(Enum.TryParse(“我的字符串”,ignoreCase,out var r))
//使用r
其他的
Console.WriteLine(“请输入正确的值”);
您可以在下面这样的开关语句之前使用string contain()函数,我还没有测试它是否像这样工作(嵌套),如果不是,您必须使用if和else if条件

time = input.Trim().Contains("winter") ? Year.Winter: (input.Trim().Contains("summer") ?Year.Summer :(input.Trim().Contains("autumn") ?Year.Autumn:i(nput.Trim().Contains("autumn") ?Year.Autumn: null)));
您可以做的另一件事是为用户提供1年、秋季、2年、夏季、3年、冬季、4年、春季等选项,并获取一个可以使用开关状态的数字

time = input.Trim().Contains("winter") ? Year.Winter: (input.Trim().Contains("summer") ?Year.Summer :(input.Trim().Contains("autumn") ?Year.Autumn:i(nput.Trim().Contains("autumn") ?Year.Autumn: null)));