C# 如何将操作提取到成员函数中?

C# 如何将操作提取到成员函数中?,c#,.net,linq,lambda,C#,.net,Linq,Lambda,我有以下代码: class SomeClass { void someFunction() { Action<string> myAction = (what)=> { //whatever } new List<string>().ForEach(myAction); } } class-SomeClass{ void函数() { 动

我有以下代码:

class SomeClass {
    void someFunction()
    {
          Action<string> myAction = (what)=>
          {
             //whatever
          }
          new List<string>().ForEach(myAction);
    }
}
class-SomeClass{
void函数()
{
动作myAction=(什么)=>
{
//随便
}
新列表().ForEach(myAction);
}
}
我想将
myAction
中的代码提取到一个单独的成员函数中

我该怎么做呢?

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

    public void Whatever(string what)
    {
        // ... whenever
    }
}
{ void函数() { Action myAction=无论什么; 新列表().ForEach(myAction); } public void where(字符串what) { //…无论何时 } }
或者直接,无需定义本地
操作
变量(在发布模式下可能会进行优化):

newlist().ForEach(无论什么);

你在找这个吗

class SomeClass { 
    void someFunction() 
    { 
          new List<string>().ForEach(SeparateMemberFunction); 
    }
    void SeparateMemberFunction(string s)
    {
        //whatever
    } 
} 
class-SomeClass{
void函数()
{ 
新列表().ForEach(SeparateMemberFunction);
}
void SeparateMemberFunction(字符串s)
{
//随便
} 
} 

这应该是等效的:

class SomeClass {

    void myAction(string what)
    {
        // whatever
    }

    void someFunction()
    {
          new List<string>().ForEach(item => myAction(item));
    }
}
class-SomeClass{
void myAction(字符串what)
{
//随便
}
void函数()
{
新列表().ForEach(item=>myAction(item));
}
}
由于
操作
意味着
带有字符串参数且不返回值的方法

我使用了不同的方法:

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

    private void MyAction(string str){ /* ... */ }
}
class-SomeClass
{
公共函数()
{               
new List().ForEach(e=>this.MyAction(e));
}
私有void MyAction(字符串str){/*…*/}
}

我发现它更清楚,因为我一眼就看出
MyAction
是一种方法,而不是
字段或
属性

@Andreasniedermir:
Action
Func
有什么区别吗?@DanPuzey我想OP想要的是
成员表达式
而不是成员函数^。。。刚刚意识到这是关于提取一种方法。。。
class SomeClass
{
    public void SomeFunction()
    {               
        new List<string>().ForEach(e => this.MyAction(e));
   }

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