什么是执行框架?

时间:2010-03-05 23:47:47

标签: c# stack callstack

在C#中,什么是执行帧(也与此有关,我听说过激活帧)。  IIRC它是一个方法参数去的插槽,但不记得所有的细节。

由于

2 个答案:

答案 0 :(得分:5)

“执行框架”是一个在解释语言中使用的术语,特别是Python。这是与C#完全不同的执行模型。最接近的等价物是C#方法中的范围块,一大块代码用括号括起来。虽然Python执行框架也可以扩展到函数体,但现在它等同于C#中的堆栈框架。这是激活框架的另一个术语。

C#编译器识别C#中作用域块的本地声明。运行时不会,它只识别在整个方法的生命周期中处于活动状态的堆栈帧。通过简单地将所有范围块中的所有局部变量的总和声明为激活帧,编译器可以轻微地区分这种差异。这是Python解释器无法承受的奢侈品。

答案 1 :(得分:3)

我相信你指的是一个堆栈框架 - 在这种情况下,答案不是特定于C#或特定于任何特定语言,而是特定于您的程序正在执行的平台。来自Wikipedia article上的Call Stack

  

调用堆栈由堆栈组成   帧(有时称为激活   记录)。这些取决于机器   包含子程序的数据结构   国家信息。每个堆栈框架   对应于对子程序的调用   尚未终止的   返回。

另请参阅this answer to a previous question以获得有关堆栈的精彩描述,包括堆栈帧。