次のコード スニペットを検討してください。
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」ステートメントを持たないようにするために、ここでどのようなメカニズムが働いていますか?