"()=>"的目的是什么?

cli*_*uke 10 c#

我之前在Uni的编程课程中没有真正遇到过这种语法,我很好奇它的含义.

我必须实现它的唯一时间是:

  1. 当我必须创建一个BackgroundWorker必须添加到ProgressChanged事件

    Invoke((MethodInvoker)(() => updatePing((int) e.UserState)));

  2. 在研究使用Caliburn.Micro MVVM框架的教程时

    NotifyOfPropertyChange(() => Count);

我试着搜索这个符号的含义,但它使用的特殊字符似乎与谷歌搜索混淆,我不知道它叫什么.

Jon*_*eet 22

=>为语法lambda表达式.

()表示没有参数 - 如果有参数并且可以从上下文推断出类型,则可以将它们指定为:

(x, y) => x + y
Run Code Online (Sandbox Code Playgroud)

或明确指定类型

(int x, string y) => x + y.Length
Run Code Online (Sandbox Code Playgroud)

如果只有一个参数并且可以推断出其类型,则不需要括号:

x => x.Length
Run Code Online (Sandbox Code Playgroud)


Sam*_*ica 10

这是一个没有参数的lambda表达式.

你真正在做的是将一个delegate(有点像方法的变量)传递给你的函数


() => Count 表示类似于以下的方法

type methodName()
{
    return Count;
}
Run Code Online (Sandbox Code Playgroud)

  • 你受骗了. (14认同)
  • @ChaoticLoki重要的是,如果在传递委托之后`Count`被更改,但在你实际调用它之前.如果你只是通过`Count`而不是它将返回你通过它时的计数. (3认同)