Использование глобальных переменных, как правило, считается плохой практикой, так как они увеличивают связность и ремонтопригодность, поэтому вам следует пересмотреть свой подход, если вы часто используете их. Если во всем вашем коде используются одни и те же несколько переменных, вам может быть очень сложно отладить его, поскольку вам нужно отслеживать глобальное состояние системы, и вы не знаете, какая часть программы его модифицировала.
Кроме того, вы почти никогда не должны использовать открытые поля в классах по аналогичным причинам. Это позволяет клиентскому коду быть привязанным непосредственно к реализации вашего класса, так что, если вы измените внутреннюю механику класса, клиентский код нарушится. То, что вы должны использовать, это свойства .
Однако, чтобы ответить на ваш вопрос: нет, если вы хотите, чтобы участник был глобально доступен, он должен быть статическим. В противном случае он существует только для объекта, на который вам потребуется ссылка для доступа к нему.
Вот некоторые ключевые идеи, о которых вы можете прочитать здесь: внедрение зависимостей и инкапсуляция .