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.
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.
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.
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.
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.
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.
Tags und Links c#