【发布时间】:2018-04-18 12:22:29
【问题描述】:
我创建了一个小型测试类:
public delegate int Adder();
class Example {
static Adder CreateAdder() {
int x = 0;
return delegate {
x++;
return x;
};
}
public static void Test() {
Adder add = CreateAdder();
Console.WriteLine(add());
Console.WriteLine(add());
Console.WriteLine(add());
}
}
x 是一个闭包变量。现在,我可以用 Reflector 看一下,编译器会生成以下帮助类:
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0 {
public int x;
internal int <CreateAdder>b__0() {
int x = this.x;
this.x = x + 1;
return this.x;
}
}
但是我看不到,这个 Helper-Class 将如何在测试方法中使用。是否有可能使用 Helper-Class 来显示测试方法?
【问题讨论】:
-
您可以使用 ILDASM 或 JetBrain 的 dotPeek 来反编译您的程序集并查看
Test()中发生了什么。