Warum verwenden Sie private Variablen mit C # Getter / Setter?

7

Ich sehe das die ganze Zeit:

%Vor%

Für mich scheint das identisch zu sein:

%Vor%

Also, warum macht jeder den ehemaligen ... WARUM DER PRIVATE VAR ALLES?!

    
y2k 12.02.2010, 19:11
quelle

9 Antworten

31

Zunächst einmal ist dies neu in C # 3.0, es war vorher nicht da. Zweitens haben Sie keine Wahl, wenn Sie Ihren Getter und Settlern eine benutzerdefinierte Logik hinzufügen möchten. Also ja, in Ihrem Beispiel, wo es keine benutzerdefinierte Logik gibt, ist es das Gleiche (der Compiler erzeugt das für Sie im Hintergrund), aber wenn Sie beispielsweise ein Ereignis auslösen wollen, müssen Sie explizit sein darüber.

    
BFree 12.02.2010, 19:13
quelle
6

Ich würde gerne sehen

%Vor%

mehr,;)

aber @BFree hat es genagelt

    
hunter 12.02.2010 19:19
quelle
4

Zunächst einmal ist die von Ihnen verwendete Syntax neu. Es war in früheren Versionen von C # nicht vorhanden.

Zweitens brauchen Sie die private Variable, wenn Sie einen Standardwert haben oder das Ergebnis lazy-load.

    
John Saunders 12.02.2010 19:14
quelle
4

Ein Beispiel, um zu erweitern, was @BFree sagt:

%Vor%     
AGoodDisplayName 12.02.2010 19:20
quelle
2

Magst du jemanden, den du nicht kennst? Ich hoffe nicht. Dies ist eine Möglichkeit, etwas zu liefern, das im Wesentlichen ein Proxy für etwas ist, das Sie besitzen, aber nicht die Kontrolle darüber abgeben möchten. Wenn Sie sich entschließen, zu bestätigen, dass Ints positiv sind, können Sie damit beginnen, wenn Sie wie angegeben codieren.

C # macht dies jetzt mit automatischen Eigenschaften transparent.

    
No Refunds No Returns 12.02.2010 19:14
quelle
2

Vor C # 3 war das der einzige Weg, es zu tun. Implizit typisierte Eigenschaften waren noch nicht verfügbar. Die Leute wollten immer noch das private Mitglied abstrahieren. Wenn Entwickler dies in C # 3 noch tun, sind ihnen entweder die neuen Änderungen nicht bekannt oder sie müssen eine benutzerdefinierte Get / Set-Logik bereitstellen.

    
Jordan Parmer 12.02.2010 19:14
quelle
2

Das ist der alte Weg, es zu tun. Wie Sie es bevorzugen ("automatische Eigenschaften") ist es ein relativ neues Konstrukt in der Sprache. Vor ein paar Jahren mussten wir immer private Variablen verwenden.

Es kann auch andere Gründe geben, private Variablen zu verwenden, allerdings nicht in dem einfachen Beispiel, das Sie angeben. Wenn Sie zum Beispiel die Eigenschaft mit einem Standardwert initialisieren müssen, können Sie dies nicht wirklich mit automatischen Eigenschaften tun; Stattdessen müssen Sie in den Konstruktoren initialisieren.

    
Mike Mooney 12.02.2010 19:16
quelle
1
%Vor%

war eine in C # 3.0 hinzugefügte Funktion namens Automatische Eigenschaften. C # 2.0 unterstützt dies nicht und benötigt die private Variable mit den expliziten Getter und Setter. Daher wird viel älterer Code oder abwärtskompatibler Code die expliziten Getter und Setter verwenden.

    
Mark Kinsella 12.02.2010 19:14
quelle
1

Wenn Sie sich die Ausgabe ansehen, die der Compiler mit einem Werkzeug wie Reflektor erzeugt hat, wurde ein privates Feld hinzugefügt.

    
bristows 12.02.2010 19:19
quelle

Tags und Links