本周两次,我读过有人写道,事件(.net)被“抛出”了。我一直认为用于事件的动词要么是“火”,要么是“加注”。我认为“抛出”用于例外,但不是事件(“加注”可以用于任何一个)。
是否有其他人发现将事件“抛弃”令人困惑?
答案 0 :(得分:18)
我同意,事件被提出/解雇/触发。如果抛出任何东西,那就是例外。
答案 1 :(得分:7)
MSDN库中的标准约定似乎引用了Raising an Event和Throwing an Exception。
答案 2 :(得分:5)
另一个术语是“被调用”。由于事件是delgates,因此调用它们来调用它们,但是一般术语是“触发”或“引发”。
此外,在此上下文中使用“throw”一词令人困惑,因为它会与“throw”关键字混淆。您不能使用throw关键字抛出事件。
答案 3 :(得分:3)
Raise是MSDN文档中最常见的动词。
我同意 - 如果我听到有人抛出某些东西,我认为这是一个例外。 C#语言使得一个非常明确 - throw是一个与异常一起使用的保留字。
答案 4 :(得分:3)
尽管throw
可能不是例外的事情,但很明显throw
仅用于例外。 提升确实是您用来表示事件已发生的术语。
答案 5 :(得分:3)
不,他们不能被抛出,但很像矮人和霍比特人,他们可以被扔掉。
答案 6 :(得分:2)
我认为可以抛出事件,但如果你真的这样做,它就是无能的编码。
让我解释一下。在C ++中,您可以抛出任何类型。你可以扔布尔。你可以抛出enum error_type
。你可以抛出std::exception
。当然你可以抛出struct XEvent
。
但如果你真的这么做的话,你很可能正在做一些可怕的错误或可怕的混乱(因此也是错误的)。
我全都不是为了不重写单词的含义,以避免含糊不清(不需要存在的地方)。
我认为“throw”通常被理解为暗示调用堆栈展开(因为当你有一个定义明确的堆栈时,但我认为它可以扩展到无限度的单一链接列表;也就是说,一棵树父指针)。让我们坚持下去。
单词“raise”也用于信号。如果有可能避免将此用于事件,那就太好了。
我更喜欢在事件发生时“解雇”(“onMouseOver事件刚刚解雇”),并且当事件监听器通知消费者时“可能已发出信号”(“XMouseMotionNotify事件已通知客户端”)。 / p>
答案 7 :(得分:1)
您通常会听到人们提到被解雇或被提升的事件。但在我看来,抛出完全没问题。关键是如果他们说事件被抛出。
不要尝试分裂成许多头发。我们的专业很复杂,有成千上万的技术,更不用说考虑我们沟通的细微差别了。
答案 8 :(得分:1)
我说你发布一个事件。