“()=>”的目的是什么?

时间:2013-05-15 17:46:20

标签: c#

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

我必须实施的唯一一次是:

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

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

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

    NotifyOfPropertyChange(() => Count);

  3. 我已经尝试过搜索这种符号的含义,但它使用的特殊字符似乎与谷歌搜索混淆,我不知道它的名称。

2 个答案:

答案 0 :(得分:22)

=>lambda expression的语法。

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

(x, y) => x + y

或明确指定类型

(int x, string y) => x + y.Length

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

x => x.Length

答案 1 :(得分:10)

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

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


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

type methodName()
{
    return Count;
}