[英]How to compare enum array values and console input?
如何檢查是否有用戶從控制台輸入的值。
我有五個枚舉值:
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(arrayFruits.GetValue(i) == element)
具體來說,因為arrayFruits
是Array
而不是Fruits[]
,所以這是一個object ==
測試,它是與新裝箱值的參考比較,它永遠不會返回 true(它是參考相等)。
解決方案:
Fruits[]
並使用typedArray[i] == fruit
- 然后使用 integer 相等性比較兩個枚舉,或者object
時使用Equals
而不是==
第一種選擇是迄今為止更好的選擇。
投射到水果:
if ((Fruits)arrayFruits.GetValue(i) == (Fruits)element)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.