2

我有这个代码:

class SomeClass {
    void someFunction()
    {
          Action<string> myAction = (what)=>
          {
             //whatever
          }
          new List<string>().ForEach(myAction);
    }
}

我想将里面的代码提取myAction到一个单独的成员函数中。

我怎么做?

4

4 回答 4

7
class SomeClass
{
    void someFunction()
    {
        Action<string> myAction = Whatever;
        new List<string>().ForEach(myAction);
    }

    public void Whatever(string what)
    {
        // ... whenever
    }
}

或者直接,不定义局部Action<string>变量(无论如何,这可能会在发布模式下被优化):

new List<string>().ForEach(Whatever);
于 2012-08-03T07:39:25.170 回答
3

你在找这个吗?

class SomeClass { 
    void someFunction() 
    { 
          new List<string>().ForEach(SeparateMemberFunction); 
    }
    void SeparateMemberFunction(string s)
    {
        //whatever
    } 
} 
于 2012-08-03T07:40:43.857 回答
3

这应该是等效的:

class SomeClass {

    void myAction(string what)
    {
        // whatever
    }

    void someFunction()
    {
          new List<string>().ForEach(item => myAction(item));
    }
}

既然Action<string>意味着a method with a string parameter which does not return a value

于 2012-08-03T07:40:52.547 回答
1

我使用不同的方式:

class SomeClass
{
    public void SomeFunction()
    {               
        new List<string>().ForEach(e => this.MyAction(e));
   }

    private void MyAction(string str){ /* ... */ }
}

我发现它更清楚,因为我第一眼看到的MyAction是一种方法,而不是 afield或 a property

于 2012-08-03T07:51:59.197 回答