Код, который использует глобальные переменные, сложнее поддерживать. Поскольку сопровождающий должен найти каждое использование переменной в системе, прежде чем он сможет точно знать, что делает переменная. Поскольку это замедляет обслуживание, его следует избегать, насколько это возможно. Вот и все `
Это должно дать вам все ответы, которые вы хотите:
https://en.wikipedia.org/wiki/.NET_Framework_version_history#Overview
В связи с тем, что новые версии .NET выпускаются все время. Я чувствовал, что было бы неправильно пытаться встроить историю в этот ответ, а просто направить вас к источнику, который обновляется.