2 Stimmen

Wie man einem readonly statischen Feld einen Wert zuweist

Ich habe ein Feld, das statisch und schreibgeschützt ist. Die Anforderung ist, dass der Wert beim Anmeldevorgang dem Feld zugewiesen werden soll und danach schreibgeschützt sein sollte. Wie kann ich das erreichen?

  public static class Konstante
    {
        public static readonly string name;                

    }

Bitte helfen Sie mir.

3voto

Dominik Punkte 3302

Wenn Sie ein schreibgeschütztes Feld deklarieren, können Sie es nur im Konstruktor der Klasse festlegen. Was Sie tun könnten, ist die Implementierung einer Eigenschaft nur mit einem Getter und die Bereitstellung einer Änderungsmethode, die während Ihrer Anmeldefolge verwendet wird, um den Wert zu ändern. Andere Teile Ihres Programms können die Eigenschaft effektiv nutzen, ohne ihnen zu erlauben, den Wert zu ändern.

1voto

Yaur Punkte 7185

Sie benötigen einen statischen Konstruktor

public static class Konstante 
{
    public static readonly string name;

    static Konstante()
    {
        name = "abc";
    }
}

1voto

Reza ArabQaeni Punkte 4836
public static class Konstante
{
    public static string Name
    {
        get
        {
            return name;
        }
        set
        {
            if (name == null)
                name = value;
            else
                throw new Exception("...");
        }
    }
    private static string name;
}

0voto

Fischermaen Punkte 11982

Einfach weisen Sie den Wert in der Deklaration (oder im Konstruktor) wie folgt zu:

public static class Konstante     
{
    public static readonly string name = "MeinName";
} 

readonly ist Zucker für den Compiler, der ihm sagt, dass Sie nicht beabsichtigen, den Wert außerhalb des Konstruktors zu ändern. Wenn Sie dies tun, wird er einen Fehler generieren.

0voto

John Gathogo Punkte 4407

Sie können auch einen statischen Konstruktor in Ihrer statischen Klasse erstellen

static Constant()
{
    name = "Name";
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X