呼叫站点说明
本文关键字:说明 站点 呼叫 | 更新日期: 2023-09-27 18:36:09
扫描互联网,我很难以简单的方式理解 - 术语呼叫站点(@dlr)。我一直在这里读到呼叫网站是:
一个网站说
调用方法的位置。
一本书说:
呼叫站点 。这是DLR的原子 - 最小的一块 的代码这可以被视为一个单元。一个表达式可以 包含大量呼叫站点,但行为建立在 自然的方式,一次评估一个呼叫站点。对于其余的 讨论,我们一次只考虑一个呼叫站点。它 有一个呼叫站点的小示例来引用会很有用 to,所以这是一个非常简单的,其中 d 当然是 类型动态
d.Foo(10);调用站点在代码中表示为 System.Runtime.CompilerServices.CallSite.
另一本书说:
编译器发出最终生成表达式树的代码 描述操作,由 DLR 将管理的呼叫站点管理 在运行时绑定。呼叫站点本质上充当中介 在呼叫方和被叫方之间。
抱歉,我看不出这 3 种解释在哪里组合成一个简单的解释。
我很乐意得到一个简单的解释:
我可以解释一下我的妻子 - 什么是呼叫网站?
第一种解释与 dlr 或动态类型无关:简单地说,调用站点是源代码中调用方法的位置(或站点)。
在实现动态类型时,必须存储有关代码中包含的动态方法调用的信息,以便可以在运行时调用它们(dlr 需要查找方法、解决重载等)。 表示此信息的对象也应该称为"调用站点",这似乎是很自然的。
这就是我的看法。
对于此示例,调用就像执行某些代码并返回的方法或函数一样。
对于静态语言运行时程序(C 或 CLR 等),调用站点本质上是进行函数调用的地方。这是呼叫将在正常(非异常)流中返回到的位置。由于这是一个静态程序,调用站点只是一个内存位置,推送在堆栈上。
对于动态语言程序(Ruby,Python等),您调用的代码要到运行时才能完成。这意味着需要某种形式的逻辑来管理进行正确函数调用的过程,然后在调用后进行清理(如果需要)。如果动态语言程序位于 .NET 4 上,则使用类型为 System.Runtime.CompilerServices.CallSite 的 dlr(动态语言运行时)对象完成此操作。因此,调用将返回到 CallSite 对象中的方法,然后返回到原始调用的位置。
所以答案是,这取决于你如何打电话,从而决定你使用什么平台。