为什么不能用包含return语句的方法替换return语句?

时间:2015-11-19 22:02:29

标签: c#

下面的代码示例将抛出" Not Not Paths返回值"

   public static Validation Validate()
    {
       Validation invalid = new Validation()
       InvalidResult(invalid); // why removing the return keyword is not possible??
    }

    public static Validation InvalidResult(Validation invalid)
    {
        return invalid; // the return comes from here
    }

3 个答案:

答案 0 :(得分:7)

因为C#语言不会隐式使用返回的最后一个返回值作为return语句,所以你必须明确它。

public static Validation Validate()
{
   Validation invalid = new Validation()
   return InvalidResult(invalid);
}

C#语言允许隐式返回的唯一位置是Expression Lambda

Func<Validation, Validation> example = (invalid) => InvalidResult(invalid);

答案 1 :(得分:5)

简单地说;如果您删除Validate语句,则return不会返回任何内容。

InvalidResult返回时,您回到Validate函数内。怎么办? Validate仍然需要return

答案:您需要从InvalidResult函数返回结果:

public static Validation Validate()
{
    Validation invalid = new Validation()
    return InvalidResult(invalid);
}

答案 2 :(得分:1)

当您处于调用return语句的函数中时,程序的控制将返回到您调用该函数的位置,并且您应该返回Validation类型对象。我希望这有点帮助。