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关键字不能后跟对象表达式

c#中的switch语句有问题

当前您正在尝试返回一个值,该值将是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类型。其次,你需要在每个大小写

后面加上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关键字。

将函数改为:

 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语句中的值。