private static Dictionary<Type, Func<string, object>> _parseActions
= new Dictionary<Type, Func<string, object>>
{
{ typeof(bool), value => {Convert.ToBoolean(value) ;}}
};
上面给出了错误
错误14并非所有代码路径都返回 lambda表达式中的值 'System.Func&LT;串,对象&gt;'
但是下面的确如此。
private static Dictionary<Type, Func<string, object>> _parseActions
= new Dictionary<Type, Func<string, object>>
{
{ typeof(bool), value => Convert.ToBoolean(value) }
};
我不明白两者之间的区别。我认为example1中的额外大括号是允许我们在anon函数中使用多行,那么为什么它们会影响代码的含义呢?
答案 0 :(得分:16)
第一个使用代码块,如果您使用return
关键字,它只返回一个值:
value => { return Convert.ToBoolean(value); }
第二个,只是一个表达式,不需要明确的return
。
答案 1 :(得分:2)
第一个你没有返回任何东西,你必须显式返回一个值,因为你有一个包装它,第二个你隐式返回一个值。
要修复它吗
private static Dictionary<Type, Func<string, object>> _parseActions = new Dictionary<Type, Func<string, object>>
{
{ typeof(bool), value => { return Convert.ToBoolean(value) ;}}
};