用户选择Enum范围之外的值的问题

Tay*_*lor 4 c# enums

我希望用户能够输入一个选项,让程序与其中一个enum选项匹配.我把它在一个循环设置,使用户可以不断尝试,如果他们的条目不匹配(即Apple,Banana,Carrots).

enum Food {Apple, Banana, Carrot};

Food foodChoice;
while (!(Enum.TryParse<Food>(Console.ReadLine(), true, out foodChoice)))
{
    Console.WriteLine("Not a valid choice.");
}
Run Code Online (Sandbox Code Playgroud)

这一切都很好,花花公子,直到用户进入,比方说5.显然,Food枚举没有那么多选项,TryParse仍然会输出true,分配foodChoice给5.是否有一种简单的方法来处理这个问题?

Dmi*_*try 7

尝试使用该Enum.IsDefined方法:

Food foodChoice;
while (!Enum.TryParse(Console.ReadLine(), true, out foodChoice)
    || !Enum.IsDefined(typeof(Food), foodChoice))
{
    Console.WriteLine("Not a valid choice.");
}
Run Code Online (Sandbox Code Playgroud)