function - 为什么一个 Func 有效而另一个(几乎相同)无效

标签 function c#-3.0 delegates anonymous-methods

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

上面给出了一个错误

Error 14 Not all code paths return a value in lambda expression of type '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 函数中使用多行,那么为什么它们会影响代码的含义呢?

最佳答案

第一个使用代码块,如果您使用 return,它只会返回一个值关键词:

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

第二,作为一个表达式不需要显式的 return .

关于function - 为什么一个 Func 有效而另一个(几乎相同)无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2690300/

相关文章:

c# - 当类型已知时,类型 'T' 不能用作泛型类型或方法错误中的类型参数

sockets - 异常,但仅在第 3 次 - IAsyncResult 对象未从此类上的相应异步方法返回

c# - 如何从结构的实例方法创建一个开放的委托(delegate)?

vb.net - 尝试 - 多线程 - 在 VB.net Windows 窗体中

php - 函数返回和foreach故障

php - '1' 数字出现在 wordpress 网站的侧边栏下

c - 我的函数有什么问题,某些数字有效,而其他数字无效?

c# - 如果一个操作数是可空类型,则 Expression.GreaterThan 失败,另一个是不可空类型

visual-studio-2008 - 即使不导入命名空间,项目也会被导入

r - 数据清洗: Function to find very similar variables