C#中OOP概念“消息传递”的例子是什么(调用方法/传递参数/触发事件/处理事件/???),为什么称为消息传递?
JMSA
问问题
8998 次
3 回答
8
方法调用。
它被称为消息传递,以将其与“调用函数”的命令式概念区分开来,并强化接收对象决定做什么的想法。在呼叫站点上,您只需告诉接收者“消息”。
一个例子是类中的抽象方法,并在子类中实现;或接口方法的实现。例如,当您GetEnumerator()
通过 type 变量调用时IEnumerable
,您在调用站点不知道实际应该执行什么代码。
于 2009-07-27T16:10:30.293 回答
2
它被称为消息传递,以区别于传递参数。
传递消息的一个主要好处是您可以更改消息的内容,而无需更改接收消息的方法的签名。
另一个是几个方法可能需要相同的信息,因此可以在同一个地方定义和更改。
于 2009-07-27T16:16:20.720 回答
2
有些人觉得消息传递和方法调用是不同的。我们可以互换使用该术语,但含义很微妙。
在 smalltalk 中,消息传递是受运行时限制的,并且对象有一种方法来确定它是否可以处理未明确定义为方法的消息。Ruby 将此方法称为_missing。特别是 C++ 中的方法在编译时绑定,无法动态添加处理更多消息的方法。C# 4.0 有一个混合,一旦你开始抛出动态。
还有另一种消息传递流派,Erlang 认为所有消息参数都需要在状态中解耦。也就是说,它们要么是不可变的,要么是副本。
于 2009-07-27T16:18:09.687 回答