理解C#中的代理点

时间:2015-07-28 14:34:57

标签: c# delegates

我已经做了一些阅读,我正处于开始掌握他们所做的事情的阶段,但在我使用它们的原因或地点时我感到很茫然。在每个例子中我都看到重复定义似乎是一个方法指针,你可以使用它来代替对方法的调用,这在开发人员不知道调用哪种方法时显然很有用。或者方法的选择基于条件或状态。

这是我挣扎的地方,为什么我只能拥有if语句或switch语句然后根据结果直接调用方法?直接从对象实例调用方法有什么不好?根据我的理解,代表提供了一种更好的方法来做到这一点,但是我无法理解它的优点,从我的角度来看,这只是一种实现同样目标的方法。声明可以在决定调用哪种方法时执行。

我不知所措,现在已经玩了很长时间,对此事的任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:3)

  

为什么我只能拥有if语句或switch语句呢?   根据结果​​直接调用方法?

如果你有2个或3个不同的分支和方法,这没关系。现在想象有几十种或几百种可能根据情况被调用的方法。我不想成为那个写if语句的人。

想象一下,在游戏中为角色提供100种不同的潜在能力。每种能力都可以有自己的方法来执行。根据玩家的能力,您可以使用委托将这些方法放入该角色的列表中。现在它的完全自定义能力和玩家的能力并没有被写入代码中,他们可以在游戏过程中轻松地拾取或丢失,并且可以有数千种能力提到潜在组合的数量。

答案 1 :(得分:2)

以这种方式思考。根据OOD的SOLID原则(例如),每个对象应该对功能的单个部分负责。使用这个原则我们可以假设:

类负责处理自定义对象,带有 - 数据集的结构,负责操作的方法,事件负责发出事件发生的事件,并且委托负责对应发生的事件的相应操作。< / p>

事件和方法是&#39;具有自己的单个部分功能,因此无法处理事件本身并负责方法。这就是为什么我们需要代表......