Самой большой проблемой при работе с номерами версий C # является тот факт, что он не привязан к версии .NET Framework, что, по-видимому, связано с синхронизированными выпусками между Visual Studio и .NET Framework.
Версия C # фактически привязана к компилятору, а не к фреймворку. Например, в Visual Studio 2008 вы можете написать C # 3.0 и целевой .NET Framework 2.0, 3.0 и 3.5. Номенклатура C # 3.0 описывает версию синтаксиса кода и поддерживаемые функции так же, как ANSI C89, C90, C99 описывает синтаксис / функции кода для C.
Взгляните на Mono , и вы увидите, что Mono 2.0 (в основном реализованная версия 2.0 .NET Framework из спецификаций ECMA) поддерживает синтаксис и функции C # 3.0.