私は疑問に思いました。次のコードスニペットは、2番目のコードより多くのメモリを消費しますか?匿名関数はループでより多くのメモリを取るdo
List<Action> myList = new List<Action>();
for(int i = 0; i < 10000; i++)
{
myList.Add(() => { /* Code */});
}
今回は、方法を指しています。
List<Action> myList = new List<Action>();
for (int i = 0; i < 10000; i++)
{
myList.Add(myFuntion);
}
void myFuntion()...
それは匿名メソッドを保存する必要があるため、最初のコードスニペットは、より多くのメモリを使用する場合、私は思っていました。それとも、同じ匿名関数に毎回
を指していると関数に2番目のコードスニペットのポイントをしたり、それが
おかげ
一般にコンパイラはラムダの代理人を生成します - 実行時には通常の方法と変わりませんが、ここではいくつかの例外があります。 –
Analyze> Performance Profiler> Tick Memory Usage> Start> Take snapshot> end programに移動し、結果を確認します。でもクロージャの場合には、コンパイラが閉じられた変数のためのメンバーを含む(と彼らはあなたのために更新され続ける)クラスを生成 –