为什么匿名类不能有 lambda 属性,但可以有 Func<> 属性? [复制]

2024-03-13

我正在尝试了解 C# 对匿名类型的限制。考虑以下代码:

  var myAwesomeObject = new {
      fn1 = new Func<int>(() => { return 5; }),
      fn2 = () => { return 5; } 
  };

所以我们有两个实际上是函数的属性:

  • fn1: A Func<int>返回5.
  • fn2:返回的 lambda 函数5.

C# 编译器很高兴使用 fn1 ,但抱怨 fn2 :

无法将 lambda 表达式分配给匿名类型属性。

有人可以解释为什么一个可以但另一个不行吗?


因为编译器没有办法知道类型() => { return 5; };它可能是一个Func<int>,但它也可以是具有相同签名的任何其他委托(也可以是表达式树)。这就是为什么您必须明确指定类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么匿名类不能有 lambda 属性,但可以有 Func<> 属性? [复制] 的相关文章

随机推荐