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