Wie kann ich auf die Sicherungsvariable einer automatisch implementierten Eigenschaft zugreifen?
Wir In der Vergangenheit deklarierten Eigenschaften wie diese:
public class MyClass
{
private int _age;
public int Age
{
get{ return _age; }
set{ _age = value; }
}
}
Können wir jetzt tun:
public class MyClass
{
public int Age {get; set;}
}
Meine Frage ist, wie kann ich den Zugriff auf die private variable, die automatisch erstellt wird mit dieser notation?
Ich würde lieber Zugriff auf die private variable und nicht die öffentliche accessor 'Alter'. Gibt es eine Standard-notation für den Zugriff auf die private variable, oder ist es einfach nicht möglich?
InformationsquelleAutor der Frage public static | 2008-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Ziel, die neue automatische Eigenschaften ist die Verringerung der Menge von boilerplate-code, den Sie schreiben müssen, wenn Sie müssen nur eine einfache Eigenschaft, die braucht keine spezielle Logik in der get-oder der set.
Wenn Sie wollen, um den Zugriff auf die privaten member, die diese Eigenschaften verwenden, das ist in der Regel für ein paar Gründe:
Wollen Sie nur haben, öffentliche lese-Zugriff (D. H. nur ein 'get') und die Klasse schreiben, die dem Mitglied direkt - in diesem Fall können Sie verwenden ein eigenes set in Ihren Eigenschaften automatisch. also
Dies umfasst in der Regel die meisten der Gründe für den Wunsch, direkt auf dem Feld sichern verwendet die automatische Eigenschaften.
InformationsquelleAutor der Antwort Wilka
Ihre Nutzung der automatischen Eigenschaften bedeutet, dass Sie brauchen keine erste/Einstellung der Logik für die Immobilie somit ein eigenes backing variable ist unnötig.
Nicht verwenden, automatische Eigenschaften, wenn Sie irgendwelche komplexe Logik in Ihrer Klasse. Gehen Sie einfach
private int _age
und normale Getter/setter, wie Sie normalerweise würden.IMO, automatische Eigenschaften sind besser geeignet für die schnelle Umsetzung Wegwerf-Objekte oder temporäre Daten Kapseln wie:
Wo brauchen Sie nicht viel Logik.
InformationsquelleAutor der Antwort chakrit
Diese syntax wird gemeinhin als "syntax-Zucker", was bedeutet, dass der compiler nimmt, die syntax und übersetzt es in etwas anderes. In deinem Beispiel würde der compiler generiert code, der ungefähr so aussieht:
Selbst zu kennen, könnte man wahrscheinlich Zugriff auf das Feld sichern direkt, aber diese Art von Niederlagen der Zweck der Verwendung automatischer Eigenschaften. Ich sagen, wahrscheinlich hier, weil Sie dann davon abhängen, eine Implementierung detail, dass könnte sich ändern, an einem beliebigen Punkt in einer zukünftigen Version der C# - compiler.
InformationsquelleAutor der Antwort Scott Dorman
Vom C# 3.0-Automatische Eigenschaften erklärt
Obwohl es vielleicht möglich, dass private Mitglied direkt, es ist sehr hacky und unnötig.
InformationsquelleAutor der Antwort macbirdie
Sollten Sie nicht, und es ist sehr unwahrscheinlich, dass Sie brauchen, um. Wenn Sie brauchen, um auf die Eigenschaft zugreifen, benutzen Sie einfach die öffentlichen Eigentum (z.B. dieses.Alter). Es gibt nichts besonderes über den privaten Bereich sichern das öffentliche Eigentum, verwenden es in der Präferenz für die Eigenschaft ist nur Aberglaube.
InformationsquelleAutor der Antwort Wedge
Können Sie nicht, es ist eine Sprache-Funktion im Gegensatz zu einer IDE-Funktion. Um ehrlich zu sein am Liebsten würde ich dann IDE hinzufügen die private variable für Sie. Ich Stimme zu, es ist etwas komisch für die Klasse intern zu benutzen, die öffentlichen Einstiegspunkt für den Zugriff auf die eigenen Variablen. Also ich glaube nicht, verwenden Sie dieses neue feature, dass viel selbst.
InformationsquelleAutor der Antwort Quibblesome