Вопрос по c#, .net – Call-сайт объяснение?

15

сканирую интернет, у меня проблемы с пониманиемin a simple manner - термин call-сайт (@dlr). я читалВот этот CallSite это:

один сайт говорит

The location in which the method is called.

одна книга говорит:

call site . This is the sort of atom of the DLR - the smallest piece of codewhich can be considered as a single unit. One expression may contain a lot of call sites, but the behavioris built up in the natural way, evaluating one call site at a time. For the rest of the discussion, we'll onlyconsider a single call site at a time. It's going to be useful to have a small example of a call site to refer to,so here's a very simple one, where d is of course a variable of type dynamic

d.Foo(10); The call site is represented in code as a System.Runtime.CompilerServices.CallSite.

другая книга говорит:

the compiler emits code that eventually results in an expression tree that describes the operation, managed by a call site that the DLR will bind at runtime. The call site essentially acts as an intermediary between caller and callee.

Извини яcant посмотрите, где эти 3 объяснения объединяются в одно простое объяснение.

я буду рад получить простое объяснение:

HOw can I explain my wife -what are call-sites ?

Ваш Ответ

2   ответа
12

проще говоря, сайт вызова - это местоположение (или сайт)in the source code где метод вызывается.

При реализации динамического типа необходимо хранить информацию о вызовах динамических методов, содержащихся в вашем коде, чтобы их можно было вызывать во время выполнения (dlr должен искать метод, разрешать перегрузки и т. Д.). Кажется естественным, что объект, представляющий эту информацию, также должен называться & # x201D; call site & # x201D ;.

4

Для этого примера вызов просто похож на метод или функцию, которая выполняет некоторый код и возвращает.

Для исполняемой на статическом языке программы (C, или CLR и т. Д.) Сайт вызова, по сути, является местом, где происходит вызов функции. Это местоположение, в которое вызов вернется в обычном (не исключительном) потоке. Поскольку это статическая программа, сайт вызова - это просто область памяти, помещенная в стек.

Для динамических языковых программ (Ruby, Python и т. Д.) Код, который вы вызываете, не обрабатывается до времени выполнения. Это означает, что для управления процессом правильного вызова функции и последующей очистки после вызова (при необходимости) необходима некоторая форма логики.If the dynamic language program is on .NET 4 это делается с использованием объектов dlr (динамического языка исполнения) типа System.Runtime.CompilerServices.CallSite. Таким образом, вызов вернется к методу в объекте CallSite, а затем к местоположению исходного вызова.

Таким образом, ответ заключается в том, что это зависит от того, как вы делаете вызов и, следовательно, какую платформу вы используете.

Похожие вопросы