并非所有代码路径都返回值 - C#

本文关键字:返回值 路径 代码 | 更新日期: 2023-09-27 18:29:04

我一直在学习本教程:

http://www.codeproject.com/Articles/897559/Learn-MVC-in-days-Day

我一直没有得到并非所有代码路径都返回"GetEmployees(("方法上的值。如您所见,我还删除了所有额外的命名约定标记。我相信我使用的是更高版本的.Net,Visual Studio告诉我他们造成了错误。

例如:

"public List<Employee><employee> GetEmployees()" to:  
"public List<Employee> GetEmployees()"
public class EmployeeBusinessLayer
{
    public List<Employee> GetEmployees()
    {
        List<Employee> employees = new List<Employee>();
        Employee emp = new Employee();
        emp.FirstName = "johnson";
        emp.LastName = " fernandes";
        emp.Salary = 14000;
        employees.Add(emp);
    }
}

请帮忙,我真的想了解 C# MVC 的语言,以及与我的背景 PHP 过程风格相比的 OOP。

并非所有代码路径都返回值 - C#

您的方法返回类型是 List<Employee> 。它希望您返回一个List<Employee>对象。但是您没有从类型 List<Employee> 的方法返回任何内容。

以下内容将解决您的问题。

public List<Employee> GetEmployees()
    {
        List<Employee> employees = new List<Employee>();
        Employee emp = new Employee();
        emp.FirstName = "johnson";
        emp.LastName = " fernandes";
        emp.Salary = 14000;
        employees.Add(emp);
        return employees;
    }
">

代码路径",消息解释

该消息表示您的函数可能不会返回任何内容。"代码路径"是指代码可能遵循的路径。例如,如果你有一个if语句,根据条件,其中的代码将被执行或不执行,所以你有两个代码路径。

在您的情况下,没有任何条件语句,因此只有一个代码路径。整个函数将从头到尾运行。

所以这个信息只是稍微模糊。您有一个不返回值的代码路径。

溶液

解决方案:归还一些东西。假设返回类型为 List<Employee> ,您可能打算返回员工列表,因此该函数应以一行额外结尾:

return employees;

如果你只习惯于在 PHP 中函数,你可能以前仍然见过这个。函数返回值的概念在大多数(如果不是全部(过程语言中都是已知的(不要与函数式语言混淆,这是不同的!

正如错误所说,您需要返回类型为 employees List<Employee> .

public List<Employee> GetEmployees()
    {
        List<Employee> employees = new List<Employee>();
        Employee emp = new Employee();
        emp.FirstName = "johnson";
        emp.LastName = " fernandes";
        emp.Salary = 14000;
        employees.Add(emp);
        return employees;
    }

你需要返回一个值。看看下面的代码。

public List<Employee> GetEmployees()
{
    List<Employee> employees = new List<Employee>();
    Employee emp = new Employee();
    emp.FirstName = "johnson";
    emp.LastName = " fernandes";
    emp.Salary = 14000;
    employees.Add(emp);
    return employees;
}

如前所述,您需要在方法中有一个 return 语句。但是,通过使用 yield return 语句,有一种更简洁的方法。

public IEnumerable<Employee> GetEmployees()
{
    Employee emp = new Employee();
    emp.FirstName = "johnson";
    emp.LastName = " fernandes";
    emp.Salary = 14000;
    yield return emp;
}