Automatische Eigenschaftenwerte und Standardwerte [duplizieren]

7

Ich habe eine Eigenschaft in einer Klasse wie diese

%Vor%

Ich möchte, dass es standardmäßig von "Normal"

ist

Gibt es eine Möglichkeit, dies im "automatischen" Stil anstatt im folgenden zu tun

%Vor%     
Joseph Le Brech 15.08.2011, 10:30
quelle

7 Antworten

9

Nein, eine automatische Eigenschaft ist nur ein einfacher Getter und / oder Setter und eine Unterstützungsvariable. Wenn Sie irgendeine Art von Logik in die Eigenschaft einfügen möchten, müssen Sie die Syntax der regulären Eigenschaft verwenden.

Sie können den Operator ?? jedoch etwas kürzer verwenden:

%Vor%

Beachten Sie, dass der Setter nicht zum Initialisieren der Eigenschaft verwendet wird. Wenn Sie also den Wert nicht im Konstruktor festlegen (oder einen Wert in der Variablendeklaration zuweisen), ist der Standardwert immer noch null. Sie könnten stattdessen den Getter einchecken, um dies zu umgehen:

%Vor%     
Guffa 15.08.2011, 10:33
quelle
12

Ja, das kannst du.

Wenn Sie nach etwas suchen wie:

%Vor%

Machen Sie eine Google-Suche nach "Aspect Oriented Programming mit .NET"

.. wenn das für dich zu viel ist, mach das:

%Vor%     
Lee Smith 15.08.2011 10:48
quelle
2

Sie müssen ein Hintergrundfeld verwenden.

%Vor%     
Jethro 15.08.2011 10:32
quelle
2

Sie müssen entweder ein Hintergrundfeld verwenden und dieses auf Ihren Standardwert initialisieren

%Vor%

oder, behalte die Eigenschaft auto und rufe den Setter in deinem Konstruktor auf

%Vor%     
IanR 15.08.2011 10:42
quelle
1

Eine Möglichkeit ist die Verwendung von PostSharp, wie in diese Antwort auf eine ähnliche Frage.

    
Jens 15.08.2011 10:36
quelle
1

Sie können den DefaultValue verwenden Attribut:

%Vor%

Obwohl es das festhält

  

Ein DefaultValueAttribute führt nicht dazu, dass ein Member automatisch mit dem Wert des Attributs initialisiert wird. Sie müssen den Anfangswert in Ihrem Code festlegen.

, so dass Sie dies in Verbindung mit der Initialisierung im Konstruktor oder über ein Backing-Feld und die Standardbehandlung verwenden können.

    
Unsliced 15.08.2011 10:44
quelle
0

Du brauchst entweder eine Variable wie folgt:

%Vor%

Oder verwenden Sie Constructer , um einen Anfangswert festzulegen:

%Vor%     
Chris Snowden 15.08.2011 10:37
quelle

Tags und Links