【发布时间】:2019-11-02 09:27:12
【问题描述】:
如何检查是否有用户从控制台输入的值。
我有五个枚举值:
enum Fruits
{
apple = 1,
orange,
banana,
chery,
kiwi
}
并创建了一个包含这些值的数组:
Array arrayFruits = Enum.GetValues(typeof(Fruits));
如下代码:
Console.WriteLine("Enter plant");
string plantNotLow = Console.ReadLine();
string plant = plantNotLow.ToLower();
object element = Enum.Parse(typeof(Fruits), plant);
Fruits fruit = (Fruits)element;
Array arrayFruits = Enum.GetValues(typeof(Fruits));
for (int i = 0; i < arrayFruits.Length; i++)
{
if(arrayFruits.GetValue(i) == element)
{
}
}
例如用户输入“apple”,if-block如何输入?
【问题讨论】:
-
专门测试苹果:
if (element == Fruits.apple)。 - 不确定这是不是你的意思。请注意,arrayFruits实际上是Fruits[]- 将其转换为更容易使用 -
当我进入控制台“apple”时,它应该与枚举数组(如枚举类型或对象类型)进行比较?还是我想错了……?
-
我无法解析那句话;我也许可以提供帮助,但我首先需要了解您要做什么。如果您想与每个定义的枚举值进行比较,那么就像我说的:将数组转换为
Fruits[],然后只需测试thatTypedArray[i]==fruit- 或使用Array.IndexOf等 -
我的意思是,为什么我的代码错了她 if((arrayFruits.GetValue(i) == element) ?因为我需要将用户输入与 enum_Array 的任何元素进行比较,如果存在 e ,g, apple 我可以传递给 if-block 代码
-
因为
==很复杂并且不会按照您的想法进行操作,因为您使用的是object。请注意,.Equals而不是==应该可以工作,但是 - 我一直这么说 - 将数组转换为Fruits[]也可以。object上的==与两个枚举之间的==非常不同。