В C#, что представляет собой кадр выполнения (также связанный с этим, я слышал об активации кадра). IIRC - это слот, где параметры метода идут, но не могут запомнить все детали.Что такое кадр выполнения?
Благодаря
В C#, что представляет собой кадр выполнения (также связанный с этим, я слышал об активации кадра). IIRC - это слот, где параметры метода идут, но не могут запомнить все детали.Что такое кадр выполнения?
Благодаря
я считаю, вы имеете в виду кадр стека - в этом случае ответ не относится к C# или даже для какого-либо конкретного языка, а скорее к платформе, что ваша программа выполняется на. Из Wikipedia article на Call Stack:
Стек вызова состоит из стека кадров (иногда называемые активации записей). Это зависимые от машины структуры данных, содержащие подпрограмму информацию о состоянии. Каждый стек кадра соответствует вызову подпрограммы , которая еще не завершена с возвратом .
См. Также this answer to a previous question для отличного описания стека, включая рамы штабеля.
«Кадр выполнения» - это термин, который используется в интерпретируемых языках, в частности, Python. Это совсем другая модель исполнения из C#. Ближайшим эквивалентом является блок области действия в методе C#, фрагмент кода, заключенный в скобки с фигурными фигурными скобками. Хотя кадр выполнения Python также может распространяться на тело функции, теперь он эквивалентен фрейму стека в C#. Это еще один термин для кадра активации.
Компилятор C# распознает объявления, которые являются локальными для блока области видимости на C#. В среде выполнения нет, он распознает только стек стека, который активен для жизни всего метода. Разница тривиально заверяется компилятором простым объявлением суммы всех локальных переменных во всех блоках областей видимости в качестве кадра активации. Это роскошь, которую интерпретатор Python не может себе позволить.
+1 для обучения меня. Мне нравится этот сайт. – razlebe
Итак, кадр выполнения такой же, как и стек стека? Я видел термины, используемые отдельно, но я имею в виду фрейм exec (я знаю фрейм стека). – dotnetdev
Да, я считаю, что термины являются синонимами вообще и, по крайней мере, в контексте C#. – razlebe
См. Другой ответ от @nobugz - кажется, что «Кадр выполнения» может иметь различное значение в контексте некоторых других языков, особенно Python. – razlebe