Ign*_*cia 5 .net c# exception iif cls
如果有以下声明:
return this.revision.HasValue ? this.revision : throw new InvalidOperationException();
Run Code Online (Sandbox Code Playgroud)
我认为它会编译因为throw正在打破正常流程,并且不返回值但不构建它应该不是问题.
有没有办法纠正这个陈述或为什么不允许这样做?
谢谢.
编辑: this.revision是int?并且该方法返回int.
编辑2:如果我有这个方法
public int Test()
{
throw new Exception();
}
Run Code Online (Sandbox Code Playgroud)
编译器不会抱怨没有返回值,我期望内联中的相同内容如果...至少我们知道可以完成,因为它已经在方法中完成了.
我想问题在于 this.revision 是一个可以为 null 的类型,而 InvalidOperationException() 是一个 SystemException。if 语句中不能有两种不同的类型,例如:
return (a>b)? DateTime.Now : 2;
Run Code Online (Sandbox Code Playgroud)
请看这里:http ://msdn.microsoft.com/en-us/library/vstudio/ty67wk28.aspx
健康)状况 ?第一个表达式:第二个表达式;
条件必须评估为 true 或 false。如果条件为 true,则计算first_expression 并成为结果。如果条件为假,则计算第二个表达式并成为结果。仅计算两个表达式之一。
第一个表达式和第二个表达式的类型必须相同,或者必须存在从一种类型到另一种类型的隐式转换。
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |