考虑以下代码:
using System;
public delegate int IntToInt(int n);
public class Foo
{
static int a = 2;
static IntToInt b(int c)
{
int d = a + c;
Console.WriteLine(d);
return delegate(int n) { return c + n; };
}
public static void Main(string[] args)
{
Console.WriteLine(b(3)(4));
}
}
为什么c
最有可能分配在堆而不是堆栈上?
我读到这是因为c
具有无限范围。
您能详细说明一下这个词吗?
答案 0 :(得分:4)
为什么
c
最有可能在堆而不是堆栈上分配?
示例中的两个c
需要分配-c
的参数Foo.b
和c
的代理权限。
Foo.b
的参数完全按照您期望的方式分配在堆栈上。c
的生存期与委托对象的生存期紧密相关。