我正在尝试了解 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(使用前将#替换为@)