并非所有代码路径都返回值 - 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。
您的方法返回类型是 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;
}