Rico Mariani was recently appointed chief architect of Visual Studio. He's been blogging a lot about .NET performance over the last few years. His latest entry points to a talk he gave to Gamefest 2007 with the same title as this blog entry.
"This talk is for those who want to understand the inescapable performance consequences of the managed programming method: the things you cannot avoid and the things you can. The presentation explains those few characteristics of managed code, such as array bounds checking, application domain isolation, and write barriers, that profoundly affect the code generation at a primitive level. Comparing and contrasting the consequences for the .NET Compact Framework and the classic .NET runtime, the talk explains the reasons for these overheads, the benefits they provide, and what practices minimize the associated costs. Additionally, we discuss some commonly occurring costs, such as boxing, that aren't inherent to all managed code, and we offer some tips for minimizing those costs."
Also on his blog is a link to various articles on performance that he's written.