2025/01/01
开发基本知识:委托,事件,发布,订阅
这几个开发的概念对于我们这种非科班出身的人来说很难理解。我尝试用更通俗点的方式讲解记录一下。
委托(Delegate)是一种引用方法的类型。它提供了一种将方法作为参数传递给其他方法的方式。
事件(Event)是一种特殊的委托类型,它是成员方法的一种包装,用于在发生某些事情时提供通知。事件使用event关键字声明,并且通常与委托类型结合使用。
为什么要使用委托,假设我们现在有两个类A和B,在A中调用到了B,B中发生的一些事情要想让A知道,就需要把东西抛出来给到A,A接收并及时作出反应。
使用事件和委托可以提高代码的可维护性和可扩展性。它们允许你编写在运行时可以响应特定事件的代码,而不必修改现有代码。这种方式也有助于实现松耦合的设计,使得不同的组件可以独立地工作和变化。
下面写个最简单的例子。B中的特定代码位置发布一条Message给A,A来进行下一步处理。
在B类里定义一个委托,和这个委托对应的事件。
然后在B类所需要的位置唤起这个事件,这就是所谓的发布。
在A里我们需要定义一个方法来接受和处理B发布过来的信息,然后订阅B类的这个事件。
我下面的代码示例B类是个静态类,不需要实例化,所以在A类的构造函数里添加订阅。如果B是个实例类,那就需要在实例化后添加订阅。
我们在S3D的二次开发中,有些API只能在启动类中调用,如果你们用到了一些辅助的类或Form想调用这些API就需要用到委托的写法。如WriteStatusBar这个方法。