5
private static Dictionary<Type, Func<string, object>> _parseActions 
                                   = new Dictionary<Type, Func<string, object>>
    {
        { typeof(bool), value => {Convert.ToBoolean(value) ;}}
    };

上記はエラーになります

エラー14すべてのコードパスがタイプ'System.Func<string、object>'のラムダ式で値を返すわけではありません

ただし、以下は問題ありません。

private static Dictionary<Type, Func<string, object>> _parseActions 
                                   = new Dictionary<Type, Func<string, object>>
    {
        { typeof(bool), value => Convert.ToBoolean(value) }
    };

両者の違いがわかりません。example1の余分な中括弧は、anon関数で複数の行を使用できるようにするためのものだと思いましたが、なぜそれらがコードの意味に影響を与えたのでしょうか。

4

2 に答える 2

16

return1つ目は、次のキーワードを使用した場合にのみ値を返すコードブロックを使用します。

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

2つ目は、単なる式であるために明示的なを必要としないことですreturn

于 2010-04-22T11:28:25.383 に答える
2

最初のものは何も返さず、ラップしたので明示的に値を返す必要があります。2番目のものは暗黙的に値を返します。

それを修正するには

private static Dictionary<Type, Func<string, object>> _parseActions = new Dictionary<Type, Func<string, object>> 
{ 
  { typeof(bool), value => { return Convert.ToBoolean(value) ;}} 
}; 
于 2010-04-22T11:31:16.237 に答える