1

Anonymous MethodsDelegatesActionFunc等是否在您的计算机上分配/消耗/吃内存?

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

4

3 回答 3

7

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

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

于 2013-03-07T10:40:10.283 回答
2

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

于 2013-03-07T10:34:39.697 回答
1

定义一个委托定义一个新类。所以这需要内存来存储关于类的信息(也在运行时)。

定义一个FuncAction具有特定泛型类型会在运行时定义(对您隐藏)一个新类。所以这也需要内存。

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

于 2013-03-07T11:22:07.383 回答