“=>”是什么意思在C#?

时间:2011-06-08 13:16:25

标签: c# syntax lambda

  

可能重复:
  C# Lambda ( => )

例如

Messenger.Default.Register<AboutToCloseMessage>(this, (msg) =>
        {
            if (msg.TheContainer == this.MyContainer) // only care if my container.
            {
                // decide whether or not we should cancel the Close
                if (!(this.MyContainer.CanIClose))
                {
                    msg.Execute(true); // indicate Cancel status via msg callback.
                }
            }
        });

5 个答案:

答案 0 :(得分:2)

=>
运算符用于Lambda表达式。

http://msdn.microsoft.com/en-us/library/bb397687.aspx

它允许您“动态”定义匿名函数,并可用于创建委托或表达式树类型。

答案 1 :(得分:1)

它是一个lambda,它允许您轻松创建一个函数。

在你的例子中你也可以写:

Messenger.Default.Register<AboutToCloseMessage>(this, delegate(Message msg)
{
    if (msg.TheContainer == this.MyContainer) // only care if my container.
    {
        // decide whether or not we should cancel the Close
        if (!(this.MyContainer.CanIClose))
        {
            msg.Execute(true); // indicate Cancel status via msg callback.
        }
    }
});

甚至

Messenger.Default.Register<AboutToCloseMessage>(this, foobar);

// somewhere after //
private void foobar(Message msg)
{
    if (msg.TheContainer == this.MyContainer) // only care if my container.
    {
        // decide whether or not we should cancel the Close
        if (!(this.MyContainer.CanIClose))
        {
            msg.Execute(true); // indicate Cancel status via msg callback.
        }
    }
}

答案 2 :(得分:0)

这是一个lambda表达式(http://msdn.microsoft.com/en-us/library/bb397687.aspx)。

答案 3 :(得分:0)

它的lamda表达式(Function Argument)=&gt; {功能体}

可以指定参数的类型,但编译器通常只会解释它。

答案 4 :(得分:0)

这就是你在C#中定义lambda的方法。 msg是参数,传递给lambda方法,其余的是方法的主体。

相当于:

Messenger.Default.Register<AboutToCloseMessage>(this, SomeMethod);

void SomeMethod(SomeType msg)
{
    if (msg.TheContainer == this.MyContainer) // only care if my container.
    {
        // decide whether or not we should cancel the Close
        if (!(this.MyContainer.CanIClose))
        {
             msg.Execute(true); // indicate Cancel status via msg callback.
        }
    }
}