クロージャは、本体に変数 x と内部関数 F を持つ外部関数 O です。F は x にアクセスする必要があります。O は F を返す必要があります。つまり、F の戻り値ではなく、F 自体 (またはそのポインター) を返す必要があります。このように、F は O の外部のコードから呼び出すことができ、F は x を実行する必要があるため、x は後でスコープ内に保持する必要があります。おお出口。
JavaScript では、関数内で関数を定義できるので、簡単です。C# では、匿名メソッドまたは匿名デリゲートを使用して、内部関数と同じ動作をさせる必要があります。
クロージャーの本質は、関数が終了した後、関数のローカル変数の値を保持することです。これにより、次に関数が呼び出されたときに、以前の値が既に存在します。上記の構文と手法は、クロージャーを実現する方法です。
とにかく、内部関数やデリゲートを使用せずにクロージャの本質を持つ言語 (アセンブリ言語以外) はありますか。もちろん、OOP のクラスのフィールドも同じ効果がありますが、それ以外の方法を探しています。