C#中的OOP概念“消息传递”的例子是什么(调用方法/传递参数/触发事件/处理事件/ ???)以及为什么称为消息传递?
答案 0 :(得分:6)
方法调用。
它被称为消息传递,以区别于“调用函数”的命令概念,并强化接收对象决定做什么的想法。在呼叫站点上,您只需告诉接收者“消息”。
一个例子是类中抽象的方法,并在子类中实现;或接口方法的实现。当你打电话时GetEnumerator()
通过IEnumerable
类型的变量,您不知道在呼叫站点应该实际执行哪些代码。
答案 1 :(得分:2)
它被称为消息传递,以区别于传递参数。
传递消息的一个主要好处是,您可以更改消息的内容,而无需更改接收消息的方法的签名。
另一种方法是,有几种方法可能需要相同的信息,因此可以在同一个地方定义和更改。
答案 2 :(得分:2)
有些人认为消息传递和方法调用是不同的。我们可以互换地使用这个术语,但含义很微妙。
在smalltalk中,消息传递是运行时绑定的,并且该对象有一种方法可以确定它是否可以处理未明确定义为方法的消息。 Ruby调用此method_missing。特别是C ++中的方法在编译时绑定,无法动态添加处理更多消息的方法。一旦你开始抛出动态,C#4.0就会混合起来。
还有另一个消息传递学校,Erlang认为所有消息参数都需要在状态中解耦。也就是说,它们要么是不可变的,要么是副本。