Wie deklariere ich eine Variable, damit jede Klasse (* .cs) ohne Instanzreferenz auf ihren Inhalt zugreifen kann?
101
In können C#
Sie keine echten globalen Variablen definieren (in dem Sinne, dass sie keiner Klasse angehören).
Abgesehen davon besteht der einfachste Ansatz, den ich kenne, um diese Funktion nachzuahmen, darin, a static class
wie folgt zu verwenden:
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
}
Sie können die definierten Werte dann an einer beliebigen Stelle in Ihrem Code abrufen (vorausgesetzt, sie sind Teil desselben namespace
):
String code = Globals.CODE_PREFIX + value.ToString();
Um mit verschiedenen Namespaces umzugehen, können Sie entweder:
Globals
Klasse, ohne sie in eine bestimmte Klasse aufzunehmen namespace
(damit sie in den globalen Anwendungsnamespace eingefügt wird).namespace
.
In C # gibt es keine globale Variable. Zeitraum.
Sie können statische Mitglieder haben, wenn Sie möchten:
quelle
static
genau das Beispiel, das Sie angegeben haben, nicht wirklich als globale Variable angesehen werden kann.Prüfen Sie zunächst, ob Sie wirklich eine globale Variable benötigen, anstatt sie offen zu verwenden, ohne Rücksicht auf Ihre Softwarearchitektur.
Nehmen wir an, es besteht den Test. Abhängig von der Verwendung kann es schwierig sein, Globals mit Rennbedingungen und vielen anderen "schlechten Dingen" zu debuggen. Es ist am besten, sie aus einem Blickwinkel zu betrachten, in dem Sie bereit sind, mit solchen schlechten Dingen umzugehen. So,
static
Klasse (aus Gründen der Verwaltbarkeit).Der Grundriss für eine solche Klasse wäre:
Verwendung aus anderen Klassen (innerhalb desselben Namespace)
quelle
Eine nützliche Funktion hierfür ist
using static
Wie andere gesagt haben, müssen Sie eine Klasse für Ihre Globals erstellen:
Sie können es jedoch folgendermaßen importieren, um den Klassennamen nicht mehr vor seine statischen Eigenschaften zu schreiben:
quelle