5

C#では、実行フレームとは何ですか(これにも関連して、アクティベーションフレームについて聞いたことがあります)。IIRCは、メソッドパラメータが入るスロットですが、すべての詳細を記憶することはできません。

ありがとう

4

2 に答える 2

5

「実行フレーム」は、インタープリター言語、特に Python で使用される用語です。これは、C# とは非常に異なる実行モデルです。最も近いものは、C# メソッドのスコープ ブロックであり、中かっこで囲まれたコードのチャンクです。Python 実行フレームは関数の本体に拡張することもできますが、現在は C# のスタック フレームと同等です。これは、アクティベーション フレームの別の用語です。

C# コンパイラは、C# のスコープ ブロックに対してローカルな宣言を認識します。ランタイムはそうではなく、メソッド全体の存続期間中アクティブなスタック フレームのみを認識します。この違いは、すべてのスコープ ブロック内のすべてのローカル変数の合計をアクティブ化フレームとして宣言するだけで、コンパイラによって簡単に上書きされます。これは、Python インタープリターには手の届かない贅沢です。

于 2010-03-06T02:05:52.710 に答える
3

スタック フレームについて言及していると思います。この場合、答えは C# や特定の言語に固有のものではなく、プログラムが実行されているプラ​​ットフォームに固有のものです。Call Stackに関するウィキペディアの記事から:

コール スタックは、スタック フレーム (アクティベーション レコードと呼ばれることもあります) で構成されます。これらは、サブルーチンの状態情報を含むマシン依存のデータ構造です。各スタック フレームは、リターンでまだ終了していないサブルーチンへの呼び出しに対応します。

スタック フレームを含むスタックの優れた説明については、前の質問に対するこの回答も参照してください。

于 2010-03-06T00:09:12.357 に答える