Почему один Func допустим и другой (почти идентичный) нет

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 должны позволить нам использовать несколько строк в скоро функция итак, почему они влияли на значение кода?

5
задан gingerbreadboy 22 April 2010 в 11:26
поделиться

2 ответа

Первый использует блок кода, который возвращает значение, только если вы используете ключевое слово return :

value => { return Convert.ToBoolean(value); }

Второй, будучи просто выражением, не требует явного return .

16
ответ дан 18 December 2019 в 09:05
поделиться

Первый, вы ничего не возвращаете, и вы должны явно вернуть значение, так как вы его обернули, а второй вы неявно возвращаете значение .

Чтобы исправить это, выполните

private static Dictionary<Type, Func<string, object>> _parseActions = new Dictionary<Type, Func<string, object>> 
{ 
  { typeof(bool), value => { return Convert.ToBoolean(value) ;}} 
}; 
2
ответ дан 18 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: