Figure 9 Anonymous
Method Code with Outer Variables
กก
class SomeClass
{
string m_Space = " ";
delegate void SomeDelegate(string str);
private sealed class __LocalsDisplayClass$00000001
{
public SomeClass <this>; //Back pointer, name is valid in MSIL
public string msg; //Outer variable
public void __AnonymousMethod$00000000(string name)
{
MessageBox.Show(msg + <this>.m_Space + name);
}
}
public void InvokeMethod()
{
string msg = "Hello";
__LocalsDisplayClass$00000001 locals;
locals = new __LocalsDisplayClass$00000001();
locals.<this> = this;
locals.msg = msg;
SomeDelegate del = new
SomeDelegate(locals.__AnonymousMethod$00000000);
del("Juval");
}