c# - 事件是 OO 等同于 GOTO 吗?

标签 c# .net events goto

<分区>

在试图找出我们以前的开发人员编写的一些代码时,只是在思考这个问题。试图追踪程序的控制是如何发生的让我想起了 BASIC 过去的糟糕日子,在那里程序的执行路径几乎不明显。这更像是事件滥用的症状,还是观察者模式存在结构性问题?

最佳答案

与任何技术一样,事件也可能被错误使用和滥用。但是,由于您没有给出任何问题示例,我们几乎不可能说出您在说什么。

一般来说,不会。事件不是 GOTO 的 OO 等价物,它们通常也不是问题。我所知道的观察者模式也没有任何结构性问题。但是任何事情都可能发生虐待。

GOTO 不好的原因有很多,但最大的原因之一是它是程序流的转移,而不仅仅是子程序的执行。当您使用 goto 时,程序执行不会返回到 goto 调用完成后的点(或者在异步事件的情况下它已启动)。程序流永久转移到新的执行点。更糟糕的是,它可以将执行转移到任何地方,包括其他控制结构或其他功能内部。

事件根本不具备这些特征,只不过是具有对象感知和发布/订阅功能的函数指针。 (好吧,还有很多,但这是他们的基本用法)

关于c# - 事件是 OO 等同于 GOTO 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2290357/

相关文章:

css - 如何在 Chrome 开发工具中找到事件监听器?

php - 检查时间戳然后 Redis 发布一个事件?

c# - 如何在具有两个文本框的 dataGridView 中进行多重过滤?

c# - .NET 是否有办法检查列表 a 是否包含列表 b 中的所有项目?

c# - C#/Jenkins 的代码覆盖率

.net - BufferManager 的真实用例

c# - 防止 XslCompiledTransform 使用自闭合标签

c# - 我需要对每个命令使用 try-catch 吗?

c# - WPF 中的多个变换效果

events - Powerpoint VBA App_SlideShowBegin