加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中的虚拟方法或事件

发布时间:2020-12-15 06:41:56 所属栏目:百科 来源:网络整理
导读:我正在编写一个小C#库来简化实现一点物理模拟/实验. 主要组件是一个SimulationForm,它在内部运行一个定时器循环,并隐藏用户的样板代码.实验本身将通过三种方法进行定义: Init()(初始化所有内容) Render(Graphics g)(渲染当前模拟状态) Move(double dt)(移动
我正在编写一个小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而不实现方法,编译器将抱怨.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读