On the basis that this thread should be entitled "things you didn't know about C# until recently despite thinking you already knew everything", my personal feature is asynchronous delegates.
Until I read Jeff Richter's C#/CLR book (excellent book, everyone doing .NET should read it) I didn't know that you could call any delegate using BeginInvokeBeginInvoke / EndInvokeEndInvoke. I tend to do a lot of ThreadPool.QueueUserWorkItemThreadPool.QueueUserWorkItem calls (which I guess is much like what the delegate BeginInvokeBeginInvoke is doing internally), but the addition of a standardised join/rendezvous pattern may be really useful sometimes.