C#中为何某方法会执行两次?
为啥你的C#方法会执行两次?
嘿,我来帮你捋捋可能的原因!从你给出的代码片段来看,虽然没完全展示完,但在C#里方法跑两次最常见的情况不外乎这几种:
- 不小心重复调用了方法:先检查下你的主程序或者调用逻辑里,是不是写了两次
InformationOutput的调用?比如在Main方法里连续写了两行engineer.InformationOutput(xxx),或者在其他业务逻辑里触发了两次调用。 - 重写方法时的意外连锁触发:你这个方法是
override父类的,看看父类WhiteCollarWorker的InformationOutput实现里,有没有什么逻辑会间接回调子类的这个重写方法?虽然base.InformationOutput(obj)是调用父类的实现,但如果父类方法里有触发子类方法的逻辑(比如事件、虚方法的二次调用),也可能导致两次执行。 - 接口实现的潜在问题:你的
Engineer类实现了Method1和Method2两个接口,如果这两个接口里刚好有同名方法,或者接口的方法实现里不小心调用了InformationOutput两次,也可能出现这种情况。 - UI场景下的事件重复绑定:如果这是WinForms/WPF这类UI项目,控件的事件(比如按钮点击)很容易被不小心绑定两次,导致对应的处理方法(如果你的
InformationOutput是在事件里调用的)执行两次。 - 调试时的视觉误判:有时候IDE调试时,断点会因为JIT优化、异步逻辑等原因,看起来像是执行了两次,但实际只跑了一次。你可以在方法里加一行
Console.WriteLine("方法执行了一次"),看控制台输出几次,这样能准确判断。
要是能补充下完整的调用代码(比如Main方法里怎么调用这个方法的),还有父类WhiteCollarWorker的InformationOutput具体实现,我能帮你更精准定位问题哦!
内容的提问来源于stack exchange,提问作者Настя Шпит
相关产品推荐
相关产品推荐

