当返回值可能未被分配时,为什么会编译?

B. *_*non -5 c# exception control-flow

在我看来,这段代码:

public static bool InsertInventoryItem(DuckbillUtils.InventoryItem invItem)
{
    bool addSuccess = true;
    try
    {
        InventoryItemsList invItems = new InventoryItemsList();
        invItems.inventoryItems.Add(invItem);
    }
    catch (Exception)
    {
        addSuccess = false;
    }
    return addSuccess;
}
Run Code Online (Sandbox Code Playgroud)

...不应该编译,因为不能保证将到达返回行 - 如果有异常,则分配addSuccess,但不会从catch块中返回该方法,并且不会到达最后一行,在这种情况下,该方法没有返回任何内容?

Fra*_*rme 7

代码将catch(全部)异常设置addSuccess为false,然后进入返回行.如果没有抛出异常,返回行将返回true.并addSuccess在第一行分配一个值,它永远不会被取消分配.