Почему лямбда-выражения в c #по-разному обрабатывают логические возвращаемые значения?

Рассмотрим этот фрагмент кода:

Func<int, bool> TestGreaterThanOne = delegate(int a) {
                 if (a > 1) return (true);
                 else return(false);
                 };

В приведенном выше коде я не могу удалить оператор «else return (false )» -, компилятор предупреждает, что не все пути кода возвращают значение. Но в следующем коде, в котором используется лямбда...

Func<int, bool> TestGreaterThanOne = a => a > 1;

Мне не нужно иметь оператор «else» -, нет предупреждений компилятора, и логика работает так, как ожидалось.

Какой механизм здесь задействован, чтобы у меня не было оператора «else» в моей лямбде?

6
задан Michael Ray Lovett 11 July 2012 в 15:46
поделиться