gpt4 book ai didi

c# - C# 中 lambda 的实际类型是什么?

转载 作者:IT王子 更新时间:2023-10-29 04:24:18 24 4
gpt4 key购买 nike

我读到 C# lambda 可以隐式转换为 Action 或 Func ,但 lambda 不能直接执行 Define a lambda function and execute it immediately例如:

int n = (()=>5)(); //doesn't work
int n = ((Func<int>)(()=>5))(); //works

那么lambda的实际类型是什么,为什么不能直接调用呢?是因为 C# 类型系统比 Haskell 或 Scala 类型系统“弱”吗?

最佳答案

lambda 表达式没有类型。它不能,因为它可能拥有的 .NET 世界中的任何类型也会对​​ lambda 的参数和结果的类型进行硬编码。现在考虑:

x => x + 1

什么类型可以x有?结果会是什么类型?没有任何单一的答案,lambda 表达式确实可以转换为 Func<int, int> , Func<double, double> ,以及许多其他具有不同参数的委托(delegate)类型。给 lambda 表达式一个类型将不允许这样的表达式。 C# 确实希望允许此类表达式,因此设计为不为此类表达式提供任何类型。

关于c# - C# 中 lambda 的实际类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27795832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com