为什么一个Func有效而另一个(几乎相同)没有

gin*_*boy 5 delegates function anonymous-methods c#-3.0

private static Dictionary<Type, Func<string, object>> _parseActions 
                                   = new Dictionary<Type, Func<string, object>>
    {
        { typeof(bool), value => {Convert.ToBoolean(value) ;}}
    };
Run Code Online (Sandbox Code Playgroud)

以上给出了错误

错误14并非所有代码路径都返回类型为'System.Func <string,object>'的lambda表达式中的值

但是下面的确如此.

private static Dictionary<Type, Func<string, object>> _parseActions 
                                   = new Dictionary<Type, Func<string, object>>
    {
        { typeof(bool), value => Convert.ToBoolean(value) }
    };
Run Code Online (Sandbox Code Playgroud)

我不明白两者之间的区别.我认为example1中的额外大括号是允许我们在anon函数中使用多行,那么为什么它们会影响代码的含义呢?

Mar*_*tos 16

第一个使用代码块,如果使用return关键字,它只返回一个值:

value => { return Convert.ToBoolean(value); }
Run Code Online (Sandbox Code Playgroud)

第二个,只是一个表达式,不需要明确return.