c#中的switch语句有问题
本文关键字:有问题 语句 switch 中的 | 更新日期: 2023-09-27 18:11:33
你好,我需要c#中switch语句的帮助。我正在显示一个依赖于userRole的元素。我得到userRole很好,因为我在另一个页面(角色)中使用代码但是我在将角色传递给switch语句时遇到了麻烦。
protected void Page_Load()
{
string userRole = string.Empty;
try
{
// Get current logged in usename
string username = User.Identity.Name;
if (string.IsNullOrEmpty(username))
{
userRole = "isanonymus";
}
else
{
Compras entity = new Compras();
AspNetUser user = entity.AspNetUsers.Where(u => u.UserName.Equals(username)).FirstOrDefault();
// get role of current logged in user
userRole = user.AspNetRoles.First().Name.ToLower();
}
}
catch
{
userRole = string.Empty;
}
if (!IsPostBack)
{
ToWhom(userRole);
}
}
private void ToWhom(string userRole)
{
switch (userRole)
{
case "employee":
return EmployeeView.Visible = true;
case "supplier":
return SupplierView.Visible = true;
default:
return GenericView.Visible = true;
}
}
是我得到的错误:由于'Manage.ToWhom(string)'返回void,因此return关键字不能后跟对象表达式
当前您正在尝试返回一个值,该值将是bool值。您只需要使用下面的方法中断switch case语句。你需要改变这一点。
private void ToWhom(string userRole)
{
switch (userRole)
{
case "employee":
return EmployeeView.Visible = true;
case "supplier":
return SupplierView.Visible = true;
default:
return GenericView.Visible = true;
}
}
。
private void ToWhom(string userRole)
{
switch (userRole)
{
case "employee":
EmployeeView.Visible = true;
break;
case "supplier":
SupplierView.Visible = true;
break;
default:
GenericView.Visible = true;
break;
}
}
代码中有两个更改。首先,返回类型不会是空的,因为你返回的是bool类型。其次,你需要在每个大小写
后面加上breakprivate bool ToWhom(string userRole)
{
switch (userRole)
{
case "employee":
return EmployeeView.Visible = true;
break;
case "supplier":
return SupplierView.Visible = true;
break;
default:
return GenericView.Visible = true;
break;
}
}
如果您希望函数为void
,只需删除return
关键字。
将函数改为:
private void ToWhom(string userRole)
{
switch (userRole)
{
case "employee":
EmployeeView.Visible = true;
break;
case "supplier":
SupplierView.Visible = true;
break;
default:
GenericView.Visible = true;
break;
}
}
您使用void关键字将函数设置为不返回值,因此编译器会因为您返回值而给出错误。
您可以将函数从void更改为适当的类型并返回值,或者通过引用传递参数并将其设置为switch语句中的值。