我有这个代码:
class SomeClass {
void someFunction()
{
Action<string> myAction = (what)=>
{
//whatever
}
new List<string>().ForEach(myAction);
}
}
我想将里面的代码提取myAction
到一个单独的成员函数中。
我怎么做?
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);
你在找这个吗?
class SomeClass {
void someFunction()
{
new List<string>().ForEach(SeparateMemberFunction);
}
void SeparateMemberFunction(string s)
{
//whatever
}
}
这应该是等效的:
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
。
我使用不同的方式:
class SomeClass
{
public void SomeFunction()
{
new List<string>().ForEach(e => this.MyAction(e));
}
private void MyAction(string str){ /* ... */ }
}
我发现它更清楚,因为我第一眼看到的MyAction
是一种方法,而不是 afield
或 a property