W języku C# I zawsze używać statycznych klasy, aby zapewnić tę funkcjonalność. Klasy statyczne są szczegółowo omówione here, ale krótko zawierają one tylko elementy statyczne i nie są instancja - w zasadzie są one zmienne globalne i funkcje dostępne za pośrednictwem swojej nazwy klasy
Oto prosty przykład:
(i nazw).
public static class Globals
{
public static string Name { get; set; }
public static int aNumber {get; set; }
public static List<string> onlineMembers = new List<string>();
static Globals()
{
Name = "starting name";
aNumber = 5;
}
}
Uwaga, używam również inicjalizatora statycznego, który jest gwarantowany do uruchomienia w pewnym momencie, zanim jakiekolwiek elementy lub funkcje zostaną użyte/wywołane.
w innym miejscu programu można po prostu powiedzieć:
Console.WriteLine(Globals.Name);
Globals.onlineMemeber.Add("Hogan");
statyczne obiekty są tylko „stworzył” raz. Tak więc wszędzie, gdzie aplikacja korzysta, obiekt będzie pochodził z tej samej lokalizacji. Są z definicji globalne. Aby użyć tego obiektu w wielu miejscach, wystarczy odwołać się do nazwy obiektu i elementu, do którego chcesz uzyskać dostęp.
Możesz dodać statycznych członków do dowolnej klasy i będą one dostępne na całym świecie, ale myślę, że posiadanie jednego miejsca dla globaliów jest lepszym projektem.
Stan globalny jest zły. To sprawia, że programy, które są trudne do zrozumienia i debugowania. – Oded
@Dokładnie, prawda, ale czasami nie można tego uniknąć - wtedy bardzo jasne i przejrzyste jest bardzo ważne. – Hogan