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