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){ /* ... */ }
}