private static Dictionary<Type, Func<string, object>> _parseActions
= new Dictionary<Type, Func<string, object>>
{
{ typeof(bool), value => {Convert.ToBoolean(value) ;}}
};
Вышеупомянутое дает ошибку
Ошибка 14 Не все пути выполнения кода возвращает значение в лямбда-выражении типа 'Система. Func <строка, объект>'
Однако это ниже в порядке.
private static Dictionary<Type, Func<string, object>> _parseActions
= new Dictionary<Type, Func<string, object>>
{
{ typeof(bool), value => Convert.ToBoolean(value) }
};
Я не понимаю различия между двумя. Я думал, что дополнительные фигурные скобки в example1 должны позволить нам использовать несколько строк в скоро функция итак, почему они влияли на значение кода?
Первый использует блок кода, который возвращает значение, только если вы используете ключевое слово return
:
value => { return Convert.ToBoolean(value); }
Второй, будучи просто выражением, не требует явного return
.
Первый, вы ничего не возвращаете, и вы должны явно вернуть значение, так как вы его обернули, а второй вы неявно возвращаете значение .
Чтобы исправить это, выполните
private static Dictionary<Type, Func<string, object>> _parseActions = new Dictionary<Type, Func<string, object>>
{
{ typeof(bool), value => { return Convert.ToBoolean(value) ;}}
};