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

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

概述当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) 当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? - 代码日志

总结

以上是内存溢出为你收集整理的仅当S和T不同时,才能从lambda表达式的输出推断出Func的T?全部内容,希望文章能够帮你解决仅当S和T不同时,才能从lambda表达式的输出推断出Func的T?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1244098.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存