Dha*_*ana 8 c# compiler-errors
在C#中,以下方法将无法编译:
public bool IsItTrue()
{
}
Run Code Online (Sandbox Code Playgroud)
编译器错误:'IsItTrue()':并非所有代码路径都返回一个值,这非常有意义.但是下面的编译没有任何问题.
public bool IsItTrue()
{
while (true)
{
}
}
Run Code Online (Sandbox Code Playgroud)
哪个看起来不对,因为根本没有退货声明.为什么会这样?这里有任何帮助...,
Luk*_*keH 13
编译器知道第二种方法永远不会返回.
如果这两种方法曾经在任何情况下返回那么他们必须返回bool.
第一种方法不包含任何无限循环,不抛出任何无条件异常等,因此必须返回一个bool.代码不返回,bool因此编译器拒绝编译它.
由于无限while (true)循环,第二种方法永远不会返回.如果从来没有返回那并不重要(如果有的话)是永远不会回到这样编译器将允许它进行编译.
编译器将识别并允许的更多示例:
public bool IsItTrue()
{
throw new Exception("Always thrown!");
}
public bool HowAboutThisOne()
{
if ((46 - 3) < (27 * 9))
{
throw new Exception("Always thrown!");
}
}
Run Code Online (Sandbox Code Playgroud)