gpt4 book ai didi

c# - 对 lambda 表达式和委托(delegate)感到困惑?

转载 作者:行者123 更新时间:2023-11-30 15:02:13 25 4
gpt4 key购买 nike

委托(delegate)很清楚

delegate int del(int i);

但是为什么我们可以使用

del myDelegate = x => x * x; 

问题在这里:

  1. 如何确定 lambda 表达式中的 x 是 int 类型?
  2. 我怎么知道 lambda 表达式返回一个 int?

最佳答案

C# 编译器足够聪明,可以从上下文中隐式地找出 => 左侧的 x 的类型。因为它知道您将 lambda 赋值给 del 类型的变量,所以编译器知道 x 是一个 int

就返回类型而言,编译器知道 x 是一个 int,因此 x * x 表达式的类型也必须是 int。这就是编译器知道 lambda 的返回类型的方式。

请注意,如果没有指定 myDelegate 的确切类型,则不会编译相同的代码:

// This does not compile!
var myDelegate = x => x*x;

关于c# - 对 lambda 表达式和委托(delegate)感到困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12869347/

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