В C # нет глобальных переменных. Переменная всегда находится в локальной области видимости. Фундаментальной единицей кода является класс, а внутри класса у вас есть поля, методы и свойства.
Вы можете имитировать "глобальную переменную", создавая в каком-либо классе открытое статическое поле или свойство, но вы не должны . C # делает это трудным по очень веской причине; глобальные переменные являются чистым злом. Они нарушают несколько хороших принципов ОО-дизайна - герметизация, слабая связь и высокая когезия, и это лишь некоторые из них.
Я понимаю, что это вопрос для начинающих, но я думаю, что это , потому что это вопрос для начинающих, поэтому так важно сказать это. Сейчас самое время начать изучать, какие тактики активно не поощряются или даже опасны в C #, и использование статического поля / свойства в качестве глобальной переменной составляет около шести из них. Эти конструкции имеют законное применение, но передача данных с места на место не является одной из них.
Если два разных класса зависят от одной и той же информации, то передает информацию из источника в пункт назначения . Обычно это делается либо через конструктор, либо как аргумент вызываемого метода. У вас всегда должен быть один и только один экземпляр, который действительно «владеет» этой информацией; сделать информацию «глобальной» означает, что вы не можете рассуждать о том, кто или что может зависеть от нее в любой данный момент времени.
Пожалуйста, подумайте об этом и попробуйте подумать о других способах, которыми вы могли бы поделиться информацией, которую вы хотите сохранить в глобальной переменной (то есть, предоставив ее в качестве аргумента конструктору или методу). Если вы не уверены, опубликуйте пример того, что вы пытаетесь сделать, и мы поможем.