在 c# 中使用 switch 语句时遇到问题

Having trouble with a switch statement in c#

您好,我需要有关 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;
        }
    }

这是我得到的错误: 错误 CS0127 由于 'Manage.ToWhom(string)' return 无效,return 关键字后不能跟对象表达式

您已使用 void 关键字将函数设置为非 return 值,因此编译器给出错误,因为您执行了 return 值。

您可以将函数从 void 更改为适当的类型和 return 值,或者通过引用传递参数并将其设置为 switch 语句中的值。

目前您正在尝试 return 一个值,这将是一个布尔值。您需要使用以下方法从 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;
    }
}

将您的函数更改为:

 private void ToWhom(string userRole)
    {
        switch (userRole)
        {
            case "employee":
                 EmployeeView.Visible = true;
                 break;
            case "supplier":
                SupplierView.Visible = true;
                break;
            default:
                GenericView.Visible = true;
                break;
        }
}

代码有两处更改。首先是 return 类型不会为空,因为您正在 returning bool 类型到 return。其次你需要为每个案例设置 break

private 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 关键字即可。