C#中的虚拟方法或事件

前端之家收集整理的这篇文章主要介绍了C#中的虚拟方法或事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个小C#库来简化实现一点物理模拟/实验.

主要组件是一个SimulationForm,它在内部运行一个定时器循环,并隐藏用户的样板代码.实验本身将通过三种方法进行定义:

> Init()(初始化所有内容)
> Render(Graphics g)(渲染当前模拟状态)
> Move(double dt)(移动实验为dt秒)

我只是想知道让用户实现这些功能的最佳选择是什么?

1)虚拟方法被继承的形式覆盖

protected virtual void Init() {} 
...

要么

2)事件

public event EventHandler<MoveSimulationEventArgs> Move = ...
...

编辑:注意,方法不应该是抽象的.事实上,还有更多的,没有一个是不可执行的.离开它们通常很方便,因为许多模拟不需要它们.

这是一个“正常形式”的酷事,就是你可以写

partial class frmMyExperiment : SimulationForm {
}

您完全可以与设计师和所有继承的控件和设置/属性进行交互.我不想通过完全不同的方法来失去这个功能.

解决方法

在这种情况下,我更喜欢使用虚拟方法.

另外,如果要运行这些方法,你可以使你的类为abstract class.这是可用性方面最好的,因为它会导致编译器强制使用.如果用户尝试使用您的类/ Form而不实现方法,编译器将抱怨.

事件在这里会有点不合适,因为这真的不是你想要多于单一实现(事件允许多个订阅者)的东西,而在概念上它更多是对象的功能,而不是由物体.

猜你在找的C#相关文章