gpt4 book ai didi

c# - (Clojure 的)多方法和(C# 的)扩展方法之间的区别?

转载 作者:太空狗 更新时间:2023-10-29 17:45:17 24 4
gpt4 key购买 nike

我刚看了一个关于 Clojure 协议(protocol)的视频,它解释了“多方法”的工作原理。在我看来,它们看起来与 C# 中扩展方法的工作方式非常相似。它们基本上是同一件事(除了您不需要在 Clojure 中创建静态类之外)还是存在根本区别?使用两者有优缺点吗?

最佳答案

Clojure 中的多方法特性适用于多个调度场景。它有效地启用了运行时多态性,其中调用的方法取决于方法的参数类型(传统的单分派(dispatch)多态性取决于接收方法调用的对象的运行时类型)。基本上,您可以将单分派(dispatch)多态性视为一种方法 M

M(arg1, arg2, arg3, ..., argn)

实际调用的方法取决于 arg1 的运行时类型(因此我们重写了

的常用语法
arg1.M(arg2, arg3, ..., argn)

作为

M(arg1, arg2, arg3, ..., argn)

使类比清楚。在多重分派(dispatch)中,被调用的方法

M(arg1, arg2, arg3, ..., argn)

还取决于 arg1arg2、...、argn 的运行时类型。

您可以 achieve C# 中的类似功能与 dynamic

坦率地说,它与扩展方法完全无关。

关于c# - (Clojure 的)多方法和(C# 的)扩展方法之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com