Как объявить переменную, чтобы каждый класс (* .cs) мог получить доступ к ее содержимому без ссылки на экземпляр?
101
В нем 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
.
В C # нет такой вещи, как глобальная переменная. Период.
Вы можете иметь статические члены, если хотите:
источник
static
пример, который вы предоставили, на самом деле нельзя рассматривать как глобальную переменную.Сначала проверьте, действительно ли вам нужна глобальная переменная, вместо того, чтобы использовать ее явно, без учета архитектуры вашего программного обеспечения.
Предположим, он прошел тест. В зависимости от использования Globals может быть трудно отлаживать из-за условий гонки и многих других «плохих вещей», лучше всего подходить к ним с той точки зрения, с которой вы готовы справиться с такими плохими вещами. Так,
static
класс (для удобства управления).Базовая схема такого класса:
Использование из других классов (в том же пространстве имен)
источник
Для этого полезной функцией является
using static
Как говорили другие, вам нужно создать класс для своих глобальных объектов:
Но вы можете импортировать его так, чтобы больше не писать имя класса перед его статическими свойствами:
источник