匿名メソッド、デリゲート、アクション、機能などは、コンピュータにメモリを割り当て/消費/食べますか?
もしそうなら、彼らはキャプチャされたコードブロックの各変数に同じメモリを割り当てますか?
もちろん、他の通常の機能と同じように機能します。それらがメモリのどこかに「保存」されない場合、実行時にどのように実行できますか?
しかし、(動的メモリの割り当てのように)すべての呼び出しでより多くのメモリを消費するかどうかを尋ねている場合は、いいえ、彼らは自分でそれを行いません。
はい、すべてのものにメモリ内のある種のバッキングストアが必要になります。
デリゲートを定義すると、新しいクラスが定義されます。したがって、これにはクラスに関する情報を格納するためのメモリが必要です(実行時も)。
Func
またはを特定の汎用型で定義Action
すると、実行時に新しいクラスが定義されます(非表示になります)。したがって、これにもメモリが必要です。
匿名メソッドは、コンパイラによってぎこちない名前の通常のメソッドになり、プライベートクラスに入れられます。次に、他の方法と同様に、実行する必要のあるコードを格納するために実行時にメモリが必要になります。また、このクラスには、他のクラスと同じようにメモリが必要です。