Ich habe gerade festgestellt, dass das C # -Eigenschaftskonstrukt auch mit einem privaten Zugriffsmodifikator verwendet werden kann:
private string Password { get; set; }
Obwohl dies technisch interessant ist, kann ich mir nicht vorstellen, wann ich es verwenden würde, da ein privates Feld noch weniger Zeremonien beinhaltet :
private string _password;
und ich kann mir nicht vorstellen , wenn ich jemals fähig sein müssen , intern zu bekommen , aber nicht eingestellt oder Satz aber nicht bekommen ein eigenes Feld:
private string Password { get; }
oder
private string Password { set; }
aber vielleicht gibt es einen Anwendungsfall mit verschachtelten / geerbten Klassen oder vielleicht, wo ein get / set Logik enthalten könnte, anstatt nur den Wert der Eigenschaft zurückzugeben, obwohl ich dazu neigen würde, Eigenschaften streng einfach zu halten und explizite Methoden jede Logik ausführen zu lassen, zB GetEncodedPassword()
.
Verwendet jemand aus irgendeinem Grund private Eigenschaften in C # oder ist dies nur eines dieser technisch möglichen, aber selten im tatsächlichen Code verwendeten Konstrukte?
Nachtrag
Nette Antworten, durchlesen Ich habe diese Verwendungen für private Immobilien ausgesucht:
- wenn private Felder träge geladen werden müssen
- wenn private Felder zusätzliche Logik benötigen oder berechnete Werte sind
- da private Felder schwierig zu debuggen sein können
- um "sich selbst einen Vertrag vorzulegen"
- um eine exponierte Eigenschaft im Rahmen der Serialisierung intern zu konvertieren / zu vereinfachen
- Umschließen globaler Variablen, die in Ihrer Klasse verwendet werden sollen