我有一个有3种方法的课
用户可以调用2个构造函数之一(对象可以在构造期间更改)
我希望用户调用DoSth方法并根据构造函数调用我的wand来调用: - DoItForReal(仅限!) - DoItForReal和DoSthExtra
我的问题是wchih实现更好的性能(DoSth会被称为30秒)?
Implementation1(使用if statemant):
DoSth()
{
DoItForReal();
if (ctor1)
DoSthExtra();
}
实施2(使用事件):
private event Action DoSthEvent;
Ctor1()
{
DoSthEvent += DoItForReal;
DoSthEvent += DoSthExtra;
}
Ctor2()
{
DoSthEvent += DoItForReal;
}
DoSth()
{
DoSthEvent();
}
答案 0 :(得分:2)
每秒30次 nothing 。你应该肯定采用第一种解决方案 - 它更清楚发生了什么。 (为什么你想要使用事件,即使在第二种情况下也是如此...一个简单的Action
类型变量会更好。它不像你真的像事件一样使用它。)
我怀疑第一种形式也更快,但它甚至不值得进行基准测试 - 因为当你谈到每秒调用30次时,速度的任何差异都可以完全忽略不计。< / p>