1 Reply

Your anonymous method is translated to a private static member method of your class. For optimisations the compiler creates a hidden static cache field for static anonymous method references since they will never change. If you look at the generated IL code you will find a field like this:

The first section loads the cache field and the second creates the Action instance if the cache field is null. To avoid confusion my class is called "WeakRefTest" and the anonymous method that the compiler generated is called '<Start>m__0'