Как мне объявить переменную, чтобы каждый класс (*.cs) мог получить доступ к ее содержимому без ссылки на экземпляр?
Как использовать глобальные переменные в С#?
Ответ 1
 В C# вы не можете определить истинные глобальные переменные (в том смысле, что они не принадлежат ни одному классу).
 При этом самый простой подход, который я знаю, чтобы подражать этой функции, заключается в использовании static class следующим образом:
public static class Globals
{
    public const Int32 BUFFER_SIZE = 512; // Unmodifiable
    public static String FILE_NAME = "Output.txt"; // Modifiable
    public static readonly String CODE_PREFIX = "US-"; // Unmodifiable
}
  Затем вы можете получить определенные значения в любом месте своего кода (при условии, что он является частью одного и того же namespace):
String code = Globals.CODE_PREFIX + value.ToString();
 Чтобы иметь дело с разными пространствами имен, вы можете:
-  объявить класс 
Globalsбез включения его в определенноеnamespace(чтобы оно было помещено в пространство имен глобальных приложений); -  вставьте правильную директиву для извлечения переменных из другого 
namespace. 
Ответ 2
В С# нет такой вещи, как глобальная переменная. Период.
Если вы хотите, вы можете иметь статические элементы:
public static class MyStaticValues
{
   public static bool MyStaticBool {get;set;}
}
		Ответ 3
Сначала проверьте, нужна ли вам глобальная переменная, вместо этого использующая ее вопиюще, без учета вашей архитектуры программного обеспечения.
Предположим, что он проходит тест. В зависимости от использования, Globals может быть трудно отлаживать с условиями гонки и многими другими "плохими вещами", лучше подойти к ним под углом, где вы готовы справиться с такими плохими вещами. Итак,
-  Оберните все такие глобальные переменные в один класс 
static(для управляемости). - Имейте свойства вместо полей (= 'variables'). Таким образом, у вас есть некоторые механизмы для решения любых проблем с одновременной записью в Globals в будущем.
 
Основной план для такого класса будет:
public class Globals
{
    private static bool _expired;
    public static bool Expired 
    {
        get
        {
            // Reads are usually simple
            return _expired;
        }
        set
        {
            // You can add logic here for race conditions,
            // or other measurements
            _expired = value;
        }
    }
    // Perhaps extend this to have Read-Modify-Write static methods
    // for data integrity during concurrency? Situational.
}
Использование других классов (внутри одного и того же пространства имен)
// Read
bool areWeAlive = Globals.Expired;
// Write
// past deadline
Globals.Expired = true;
		Ответ 4
 Полезной функцией для этого является  using static
Как уже говорили другие, вы должны создать класс для ваших глобалов:
public static class Globals {
    public const float PI = 3.14;
}
 Но вы можете импортировать его так, чтобы больше не записывать имя класса перед его статическими свойствами:
using static Globals;
[...]
Console.WriteLine("Pi is " + PI);