lambda表达式的数据类型是什么?

时间:2018-07-16 17:42:34

标签: c# lambda types

我有一个小问题,我只是想不通自己,这样的lambda表达式的数据类型是什么:     x => x>0
我希望你能帮助我。

2 个答案:

答案 0 :(得分:4)

这只是一个Func<T, bool>,其中Tx的类型。

通常,Func<T, TResult>是一种方法的预定义委托类型之一,该方法接受类型为T(在您的情况下为x)的一个参数并返回类型为{ {1}}(在您的情况下为TResult

更多信息here

答案 1 :(得分:4)

Lambda表达式没有确定的类型。可以将lambda表达式隐式转换为委托或表达式类型。

您可以找到更多信息here

”请注意,lambda表达式本身没有类型,因为通用类型系统没有“ lambda表达式”的内在概念。但是,有时非正式地谈论lambda表达式的“类型”有时很方便。在这些情况下,类型是指将lambda表达式转换为的委托类型或表达式类型。“

对于您的特定示例,可以为lambda分配一些类型:

  Predicate<int> predicate = x => x > 0;
  Func<int, bool> func = x => x > 0;
  Expression<Func<int, bool>> expression = x => x > 0;