加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

仅当S和T不同时,才能从lambda表达式的输出推断出Func的T?

发布时间:2020-12-15 07:49:17 所属栏目:百科 来源:网络整理
导读:当S和T不同时,这样做: public static void FunS,T(FuncS,T func){}Fun((string s) = true); //compiles,T is inferred from return type. 但, public static void FunT(FuncT,T func){}Fun(t = true); //can't infer type. 在第一个例子中,由于T是从lambda
当S和T不同时,这样做:
public static void Fun<S,T>(Func<S,T> func)
{

}

Fun((string s) => true); //compiles,T is inferred from return type.

但,

public static void Fun<T>(Func<T,T> func)
{

}

Fun(t => true); //can't infer type.

在第一个例子中,由于T是从lambda表达式的返回类型推断的,所以在第二个例子中也不能推断T?我想它的做法,但是为什么第一个T不知道,当第二个T的Func< T,T>知道了,毕竟T == T对吧?还是在Funcs的情况下推断类型的订单?

解决方法

它与S和T没有什么不同.它与您在第一种情况下提供正式参数类型相关,而在第二种情况下不提供它.

方法类型推断不会尝试从lambda中推断代理的返回类型,直到委托的形式参数类型已知为止.

在第二种情况下,您已经给编译器没有提供正式参数类型T,因此,lambda的主体甚至不会被分析.

What do you mean by “formal parameter type”?

形式参数是一个变量,它接受传递给方法,索引器,构造函数,lambda或匿名方法的参数的值. (或者,在out和ref格式参数的情况下,变为调用者提供的变量的别名.)正式参数是变量,因此具有类型.

委托代表R Func< A,R>(A a);具有类型A的形式参数a.使用方法类型参数来构造,以使得Func

相关文章

  • >而不是Func">c# - 为什么要使用Expression >而不是Func
  • &t表达式(&t)T(t)在c中的含义是什么?
  • 与delegate和lambda表达式的区别" rel="nofollow">c# - Func <>与delegate和lambda表达式的区别
  • .net - 为什么Func和Expression之间的lambda表达式参数不明确?
  • Scala类型扩展/推断foo [T](T,T):T
  • 检查数组S和T中是否为整数s和t的算法,则s t = k
  • 为什么我不能在Java 8 lambda表达式中抛出异常?
  • 为什么Rust不能在简单的闭包中推断出适当的生命周期,或者推断出它们是冲突的?
点击查看更多相关文章

转载注明原文:仅当S和T不同时,才能从lambda表达式的输出推断出Func的T? - 代码日志

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读