Подтвердить что ты не робот

Рекомендации по использованию глобальных переменных в С#

Кто-то сказал:

"глобальная переменная" - это действительно переменная, которую вы создаете, чтобы просто "удерживать некоторую информацию", потому что ваша объектная модель слаба и вы не нашли "истинной цели" для существования переменной. Глобальные переменные почти всегда являются признаком большей архитектурной деформации.

Это может быть правдой. Но я не знаю ни одного хорошего примера любой большой и хорошей программы, сделанной без глобальных переменных, и, конечно, не используется так мало, как указано выше. Область - это фактический ключ. Вы можете сказать в программе только с одним классом, что ее параметры не являются глобальными vars. Но они есть.

В любом случае...

Я все еще понимаю концепцию singleton и, насколько я могу судить, они фактически не имеют смысла в С#. Также у меня возникает ощущение, что при отсутствии глобального состояния нам не следует избегать простого использования публичного класса, полного статических свойств

Итак, если не синглтоны или публичный класс, что делать, чтобы иметь глобальные вары в С#?

И когда мы должны использовать их? Предполагая, что их, скорее всего, не избежать. Когда-нибудь.

И почему мы должны избегать использования статического класса или static вообще? Если это действительно так для С#.

В одном предложении: Каковы наилучшие методы использования глобальных переменных в Csharp?

4b9b3361

Ответ 1

Все дело в контексте.

Если вы можете определить окружающие переменные, которые вам нужны для вычисления, вы можете обернуть это вычисление в более широком контексте, где эти глобально выглядящие переменные имеют более узкую область обитания (теперь они локальны для контекста).

Это лучше, потому что теперь вы можете иметь несколько экземпляров вашего контекста, которые должны работать независимо и не мешать друг другу. Он также называл реентерабельным контекстом.