C# Action语法

8

我有两个方法,像这样:

public void ExecuteA()
{
    Write();
    // A specific work
    Clear();
}

public void ExecuteB()
{
    Write();
    // B specific work
    Clear();
}

我希望将Write()Clear()方法提取到一个新的方法(Action)中,让它变成类似这样的形式:

public ASpecificWork()
{
    // do A work
}

public BSpecificWork()
{
    // do B work
}

Execute(BSpecificWork);
Execute(ASpecificWork);
Write()Clear()将在Execute()中仅定义一次。 如何正确编写语法?
3个回答

21
public void Execute(Action action)
{
    Write();
    action();
    Clear();
}

+1 虽然我更喜欢让 A 和 B 实现一个接口。 - C.Evenhuis
1
@C.Evenhuis - 它们是方法,而不是类型,但是如果它们在不同的类型中,那将是更好的面向对象编程方法。 - Oded

3
这应该能解决问题:
public ASpecificWork()
{
    // do A work
}

public BSpecificWork()
{
    // do B work
}

public void Execute(Action action)
{  
    Write();
    action();
    Clear();
}

Execute(BSpecificWork);
Execute(ASpecificWork);

3

Execute应该接收Action参数,并包含Write()action()Clear()方法。

public void Execute(Action action)
{
    Write();
    action();
    Clear();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接