为什么用包含返回语句的方法替换返回语句是不可能的
本文关键字:返回 语句 不可能 替换 方法 为什么 包含 | 更新日期: 2023-09-27 18:23:43
下面的代码示例将抛出"并非所有路径都返回值"
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
}
因为C#语言不会隐式使用返回的最后一个值作为返回语句,所以您必须明确它。
public static Validation Validate()
{
Validation invalid = new Validation()
return InvalidResult(invalid);
}
C#语言唯一允许隐式返回的地方是在Expression Lambda中。
Func<Validation, Validation> example = (invalid) => InvalidResult(invalid);
简单地说;如果删除return
语句,Validate
不会返回任何内容。
当InvalidResult
返回时,您回到了Validate
函数内部。现在怎么办?Validate
仍然需要return
一些东西。
答案:您需要返回InvalidResult
函数的结果:
public static Validation Validate()
{
Validation invalid = new Validation()
return InvalidResult(invalid);
}
当您在调用return语句的函数中时,程序的控制将返回到您调用该函数的位置,并且您需要返回Validation
类型的对象。我希望这能有所帮助。