不可能,因为委托必须具有单个定义的类型,但多个委托可以具有相同的签名.这使得委托类型不明确 - 编译器无法在这样的语句中稳健地选择适当的类型.注意匹配的签名的该委托实例,但不同类型的都没有互换.例如,是:
i => (i % 2) == 0
Run Code Online (Sandbox Code Playgroud)
A Func<int,bool>,还是Predicate<int>?或者是其他东西?请注意,通用艺术的数量是无关紧要的; 一Action和ThreadStart和MethodInvoker都只是空洞非泛型参数的代表.
此外,还有一个额外的复杂性/模糊性,因为lambdas也可以编译为表达式树,而不仅仅是委托:
Func<int, bool> x = i => (i % 2) == 0;
Expression<Func<int, bool>> y = i => (i % 2) == 0;
Run Code Online (Sandbox Code Playgroud)
表达式树与代表完全不同.
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |