【发布时间】:2013-11-22 10:39:41
【问题描述】:
如果有以下语句:
return this.revision.HasValue ? this.revision : throw new InvalidOperationException();
我认为它会编译,因为 throw 破坏了正常流程,不返回值但它不构建应该不是问题。
有没有办法纠正这种说法,或者为什么不允许这样做?
谢谢。
编辑: this.revision 是 int 吗?并且该方法返回 int。
编辑2:如果我有这个方法
public int Test()
{
throw new Exception();
}
编译器不会抱怨没有返回一个值,我期望内联中的同样的事情 if ... 至少我们知道可以做到,因为它已经在方法中完成了。
【问题讨论】:
-
你方法的返回类型是什么?
-
来自 msdn:first_expression 和 second_expression 的类型必须相同,或者必须存在从一种类型到另一种类型的隐式转换。 msdn.microsoft.com/en-us/library/ty67wk28(v=vs.110).aspx
-
提供您的 (visual studio) 错误消息。乍一看,修订版!=异常。
-
添加了请求的信息,谢谢。
-
throw不是类型,条件运算符也不是if-else。