C# 呼叫站点解释?

C# 呼叫站点解释?,c#,.net,.net-4.0,dynamic-language-runtime,C#,.net,.net 4.0,Dynamic Language Runtime,浏览互联网,我很难用一种简单的方式来理解这个术语——呼叫站点(@dlr)。 我一直在读CallSite是: 一个网站说 调用方法的位置 一本书说: 呼叫站点。这是DLR的一种原子——最小的一块 可被视为单个单元的代码。一个表达可能是 包含许多呼叫站点,但行为主义者在 自然的方式,一次评估一个呼叫站点。剩下的时间 在讨论中,我们一次只考虑一个呼叫站点。它是 有一个呼叫站点的小示例可供参考,这将非常有用 这是一个非常简单的例子,其中d当然是 类型动态 d、 傅(10),;调用站点在代码中表示为 Sy

浏览互联网,我很难用一种简单的方式来理解这个术语——呼叫站点(@dlr)。 我一直在读CallSite是:

一个网站说

调用方法的位置

一本书说:

呼叫站点。这是DLR的一种原子——最小的一块 可被视为单个单元的代码。一个表达可能是 包含许多呼叫站点,但行为主义者在 自然的方式,一次评估一个呼叫站点。剩下的时间 在讨论中,我们一次只考虑一个呼叫站点。它是 有一个呼叫站点的小示例可供参考,这将非常有用 这是一个非常简单的例子,其中d当然是 类型动态

d、 傅(10),;调用站点在代码中表示为 System.Runtime.CompilerServices.CallSite

另一本书说:

编译器发出最终生成表达式树的代码 它描述了由DLR将访问的呼叫站点管理的操作 在运行时绑定。呼叫站点本质上起着中介的作用 在呼叫者和被呼叫者之间

对不起,我看不出这三种解释在哪里合并成一种简单的解释

我很乐意得到一个简单的解释:

我如何解释我的妻子-什么是呼叫站点


好的,这就是我的看法

因为这个示例调用很像一个方法或函数,它执行一些代码并返回

对于静态语言运行时程序(C或CLR等),调用站点本质上是函数调用发生的地方。它是在正常(非异常)流中调用将返回的位置。因为这是一个静态程序,所以调用站点只是一个内存位置,被推到堆栈上

对于动态语言程序(Ruby、Python等),您调用的代码直到运行时才计算出来。这意味着需要某种形式的逻辑来管理进行正确函数调用的过程,然后在调用后进行清理(如果需要)。如果动态语言程序位于.NET 4上,则使用System.runtime.CompilerServices.CallSite类型的dlr(动态语言运行时)对象完成此操作。因此,调用将返回到CallSite对象中的方法,然后返回到原始调用的位置


因此答案是,这取决于您如何进行调用,以及您使用的平台。

第一个解释与dlr或动态类型无关:简单地说,调用站点是源代码中调用方法的位置(或站点)

在实现动态类型时,有必要存储有关代码中包含的动态方法调用的信息,以便在运行时调用它们(dlr需要查找方法、解决重载等)。很自然,表示此信息的对象也应称为“调用站点”