繁体   English   中英

理解C#中的代理点

[英]Understanding the point of Delegates in C#

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

这是我挣扎的地方,为什么我不能只有if语句或switch语句然后根据结果直接调用方法? 直接从对象实例调用方法有什么坏处? 从我的理解中,一个委托提供了一个更好的方法来做到这一点,但我无法理解它有什么更好的,从我的角度来看,它只是一种循环方式来实现if语句在决定调用哪个方法时可以做的同样的事情。

我很茫然,现在已经漫不经心了,任何有关此事的帮助都将不胜感激!

为什么我不能只有if语句或switch语句然后根据结果直接调用方法?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM