title: C# delegate compiler optimisation
body: <p>I have started to use anonymous delegates a lot in C# and I have begun to wonder how efficient the complier or runtime is in removing them from the code that is actually run and I haven't seen this detailed anywhere?</p>
  
  <p>Is it clever enough at all to inline them and collapse recursive uses that could be statically deduced?</p>