2010-03-05 120 views
4

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

感谢

回答

2

我相信你指的堆栈帧 - 在这种情况下,答案是不特定于C#或者实际上任何特定的语言,而是你的程序执行的平台。从Wikipedia articleCall Stack

调用栈是由堆叠的 帧(有时称为活化 记录)。这些是依赖于机器的 包含子程序 状态信息的数据结构。每个堆栈帧 对应于对尚未以 返回结束的子程序 的调用。

另请参阅this answer to a previous question了解堆栈的优秀描述,包括堆栈帧。

+0

那么执行框架与堆栈框架是一样的吗?我已经看到了单独使用的术语,但我的意思是exec框架(我知道堆栈框架)。 – dotnetdev 2010-03-06 01:01:31

+0

是的,我相信这些术语通常是同义词,至少在C#的情况下。 – razlebe 2010-03-06 01:42:39

+0

请参阅@nobugz的其他答案 - 看起来“执行框架”在一些其他语言(尤其是Python)的上下文中可能具有不同的含义。 – razlebe 2010-03-07 19:50:41

5

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

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

+0

+1教育我。我喜欢这个网站。 – razlebe 2010-03-07 19:51:29