C#:语句含义... Action wrappedAction =()=>

时间:2009-11-16 15:10:33

标签: c#-3.0

看到代码here。谁能告诉我这意味着什么?

    Action wrappedAction = () => 
    { 
        threadToKill = Thread.CurrentThread; 
        action(); 
    }; 

我们可以用.net v2.0编写这样的代码吗??

2 个答案:

答案 0 :(得分:5)

这意味着wrapAction是一个委托,它不接受参数并执行以下代码块

  threadToKill = Thread.CurrentThread; 
  action();

相当于

public delegate void wrapActionDel(); 

public void wrapAction()
{
      threadToKill = Thread.CurrentThread; 
      action();
}

public void CallwrapAction()
{
   wrapActionDel del = wrapAction;
   del ();
}

您可以看到这是详细的,但Action不是。

而且,这仅适用于.Net 3.5。不用担心,您的.net 2.0代码将与.net 3.5无缝协作,因此您只需升级即可。

答案 1 :(得分:2)

这是一个lambda表达式,仅在C#3.0+中可用。该代码的C#2.0版本如下所示:

Action wrappedAction = delegate() 
{ 
    threadToKill = Thread.CurrentThread; 
    action(); 
};

假设您之前已声明了Action委托。