There are lot of questions on SO about this; some seem to be duplicates of others. Often the question does not make it clear which version of C#/.Net it is talking about, so it is hard to put the answers into context.
The good answers are spread over many of the questions, so it is not clear which question should be chosen as the “master”
Would a SO mod with C# skills like to see if this mess can be sorted out and some of the questions merged.
just for starters...