匿名方法消耗内存吗?

时间:2013-03-07 10:33:26

标签: c# delegates anonymous-methods

执行Anonymous MethodsDelegatesActionFunc等等,在您的计算机上分配/消费/吃内存?

如果是这样,他们是否在捕获的代码块上的每个变量上分配相同的内存?

3 个答案:

答案 0 :(得分:7)

当然,他们就像其他正常功能一样。如果它们不会“存储”在内存中的某个地方,它们如何在运行时执行?

但是如果你问他们是否在每次调用时消耗更多内存(如分配动态内存),那么不,他们不会自己这样做。

答案 1 :(得分:2)

每一件事都需要内存中的某种后备存储,是的。

答案 2 :(得分:1)

定义委托定义一个新类。因此,这需要内存来存储有关类的信息(也在运行时)。

使用特定泛型类型定义FuncAction在运行时定义(隐藏自己)一个新类。所以这也需要记忆。

编译器将匿名方法转换为带有乱码名称的普通方法,并放入私有类中。然后,就像任何其他方法一样,它将在运行时需要内存来存储必须执行的代码。该类将需要一些内存,就像其他类一样。