我制作了enum,并试图使用for-each循环来遍历它,并使用switch case寻找不同的情况,并获得所使用的潜水值。我得到的错误是不能隐式转换类型'console5。typepeofdevice ' to 'string'
enum typeOfDevice
{
iphone=99,
android=59,
tablet=49
}
var usedDevice = Enum.GetNames(typeof(typeOfDevice));
foreach (string used in usedDevice)
{
switch (used)
{
case usedDevice.iphone: //gets error here
Console.Write($"enter how many time you used Iphone");
var input = Console.ReadLine();
break;
case usedDevice.android:
Console.Write($"enter how many time you used Android");
var input = Console.ReadLine();
break;
case usedDevice.tablet:
Console.Write($"enter how many time you used Tablet");
var input = Console.ReadLine();
break;
default:
break;
}
}
Enum.GetNames
返回一个字符串数组。在你的循环中,你试图得到usedDevice.iphone
(等),但usedDevice
是一个字符串数组,因此你会得到一个错误。但是,如果您将usedDevice
更改为typeOfDevice
,您将得到您编辑到问题中的比较错误。
也就是说,used
是字符串类型,不能隐式地转换为typeOfDevice
,因为typeOfDevice
是enum,而不是字符串。
GetValues
而不是GetNames