您好我使用转换为带开关的字符串的枚举但它不起作用。它给出了编译错误:无法将类型'userControl_commontop.UserType'隐式转换为'string'
代码是:
private void CommonTopChangesnew(string usertype)
{
switch (usertype.Trim().ToUpper())
{
case UserType.NORMAL :
hlkSAD.Enabled = false;
hlkMRTQuery.Enabled = false;
hlkReqViewer.Enabled = false;
hlkSendnotif.Enabled = false;
break;
case UserType.POWER :
hlkSAD.Enabled = false;
hlkReqViewer.Enabled = false;
hlkSendnotif.Enabled = false;
break;
}
}
enum UserType
{
NORMAL,
POWER,
ADMINISTRATOR
}
答案 0 :(得分:5)
枚举不是字符串,只是常量const int MY_VALUE = 1;
是一个字符串。
您应该将字符串更改为枚举:
switch ((UserType)Enum.Parse(usertype, typeof(UserType))) {
...
}
答案 1 :(得分:5)
你应该试试这个:
enum UserType
{
NORMAL,
POWER,
ADMINISTRATOR
}
private void CommonTopChangesnew(string usertype)
{
switch ((UserType)Enum.Parse(typeof(UserType), usertype, true))
{
case UserType.NORMAL:
hlkSAD.Enabled = false;
hlkMRTQuery.Enabled = false;
hlkReqViewer.Enabled = false;
hlkSendnotif.Enabled = false;
break;
case UserType.POWER:
hlkSAD.Enabled = false;
hlkReqViewer.Enabled = false;
hlkSendnotif.Enabled = false;
break;
}
}
答案 2 :(得分:3)
您可以使用此函数将userType参数转换为枚举值:
object Enum.Parse(System.Type enumType, string value, bool ignoreCase);
as
UserType utEnum = Enum.Parse(UserType, userType, true);
然后你可以将你的switch语句称为:
switch (utEnum)
{ ... }
答案 3 :(得分:1)
您的函数接受string类型的参数,然后使用相同的参数来比较属于Enum的类型。这就是冲突。
您的功能应该是:
private void CommonTopChangesnew(UserType usertype)
{
switch (usertype)
{
case UserType.NORMAL :
hlkSAD.Enabled = false;
hlkMRTQuery.Enabled = false;
hlkReqViewer.Enabled = false;
hlkSendnotif.Enabled = false;
break;
case UserType.POWER :
hlkSAD.Enabled = false;
hlkReqViewer.Enabled = false;
hlkSendnotif.Enabled = false;
break;
}
}
答案 4 :(得分:0)
您无法将字符串与枚举进行比较。
你应该将Enum传递给你的方法。
答案 5 :(得分:0)
选项1: 更改CommonTopChangesnew以接受UserType枚举作为参数
或
选项2: 使用Enum.Parse将您的字符串转换为切换块中的UserType枚举:
(UserType)Enum.Parse(typeof(UserType),usertype)