尝试使用foreach和witch case遍历枚举



我制作了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

相关内容

  • 没有找到相关文章

最新更新