【问题标题】:Not all code paths return a value - C# [duplicate]并非所有代码路径都返回一个值 - C# [重复]
【发布时间】:2016-01-06 07:21:52
【问题描述】:

我一直在学习本教程:

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 和 OOP 语言,与我的背景 PHP 程序风格相比。

【问题讨论】:

  • 您不会返回任何东西。而且您也没有任何条件语句。所以这个信息只是有点模糊。您有一个不返回值的代码路径。
  • 教程中的例子不完整,你可以下载完整的例子,它不会有任何问题。链接:codeproject.com/KB/aspnet/897559/Collections.zip

标签: c#


【解决方案1】:

你的方法返回类型是List&lt;Employee&gt;。它希望您返回一个 List&lt;Employee&gt; 对象。但是您没有从List&lt;Employee&gt; 类型的方法中返回任何内容。

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

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;
    }

【讨论】:

  • 太棒了,我不敢相信它这么简单。 :)
【解决方案2】:

'代码路径',消息解释

该消息意味着您的函数可能不会返回任何内容。 “代码路径”是关于您的代码可能遵循的路径。例如,如果你有一个if 语句,根据条件,它里面的代码将被执行或不执行,所以你有两个代码路径。

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

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

解决方案

解决办法:退货。假设返回类型为List&lt;Employee&gt;,您可能想要返回员工列表,因此函数应以多行结束:

return employees;

如果您只习惯于使用 PHP 中的函数,那么您之前可能还见过这种情况。函数返回值的概念在大多数(如果不是全部)过程语言中都是已知的(不要与函数语言混淆,这是不同的东西!)。

【讨论】:

    【解决方案3】:

    正如错误所说,您需要返回类型为 employees List&lt;Employee&gt;.

    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;
        }
    

    【讨论】:

    • 好吧,从技术上讲,这个错误并不是说您需要遣返员工。如果是这样,这里可能就不会有问题了。 :)
    • @GolezTrol 抱歉,我的意思是 List 类型。
    【解决方案4】:

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

    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;
    }
    

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多