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は方法であり、fieldまたは property

于 2012-08-03T07:51:59.197 に答える