2009-04-27 6 views
2

Welche Vorteile bietet die Verwendung öffentlicher Eigenschaften anstelle der Verwendung der öffentlichen Eigenschaft für den Zugriff auf eine private Variable?Öffentliche Eigenschaften und private Mitglieder C#

Zum Beispiel

public int iMyInt { get; set; } 

statt

private int myint; 
public int iMyInt { get { return myint; } set { myint = value; } } 

Anders als im Stich gelassen .NET die Variable/Speicher unter der Eigenschaft zu verwalten, was sind die Vorteile (oder Nachteile für diese Angelegenheit)?

Antwort

11

Die Verwendung automatischer Eigenschaften (das erste Beispiel) erfordert weniger Eingabe.

Es wird dringend empfohlen, nur öffentliche Eigenschaften und keine öffentlichen Felder zu haben. Viele Eigenschaften sind einfache Wrapper um private Felder. Automatische Eigenschaften sparen Ihnen die Zeit und den Aufwand, die Eigenschaft und das Hintergrundfeld manuell zu erstellen.

Der eigentliche Code hinter den automatischen und manuellen Eigenschaften für den von Ihnen erwähnten einfachen Fall sollte nahezu identisch sein.

+2

Auch vorteilhaft, öffentliche Eigenschaften zu verwenden, wenn Sie DataBinding auch – RobS

1

Es gibt keinen Unterschied auf die eine oder andere Weise, bis etwas passieren soll, wenn eine Eigenschaft gesetzt oder gesetzt wird.

Wenn Sie beispielsweise ein OnMyIntSet-Ereignis möchten, können Sie die automatische Eigenschaftensyntax nicht verwenden.

4

Die beiden werden fast identisch sein, sobald sie mit IL kompiliert wurden.

Meine Faustregel ist persönlich, automatische Eigenschaften zu verwenden. Sie sind prägnanter und erfordern weniger Tipparbeit, und ich weiß, dass sie, wenn ich sie verwende, nur ein einfacher Wrapper ohne Logik sein sollen.

Wenn ich später Logik hinzufügen muss, ist es einfach, zu meinem eigenen Unterstützungsfeld zu wechseln, und es gibt keine (externen) Konsequenzen.

8

Ich würde vorschlagen, dass wichtiger als weniger Eingabe ist die erhöhte Lesbarkeit Ihres Codes. Ich würde generell empfehlen, automatische Eigenschaften als meine Standardoption zu verwenden und nur dann zu expliziten Eigenschaften zu wechseln, wenn eine bestimmte Voraussetzung dafür besteht.

+2

+1, ausgezeichneter Punkt nutzen möchten. Eigenschaften mit ihren Hintergrundfeldern führen leicht zu einer Menge Code, der von den "wichtigen" Teilen Ihrer Klasse ablenkt. – Michael

1

Meine persönliche Präferenz ist für automatische Eigenschaften, sofern nicht anders notwendig.

Der Vorteil der Verwendung automatischer Eigenschaften ist natürlich Prägnanz. Es braucht weniger Platz, es ist einfacher zu lesen, es ist einfacher zu tippen.

Der Nachteil ist, dass Sie nicht mehr Zugriff auf die private Unterstützung Variable haben, und manchmal müssen Sie das.

Also: Wenn Sie die private Unterstützung Variable verwenden müssen, verwenden Sie die "alte" Methode. Wenn Sie dies nicht tun, verwenden Sie eine automatische Eigenschaft. Verwenden Sie niemals ein öffentliches Feld. Das ist nur verrückt - reden.

0

Nur eine kurze Anmerkung: Automatisch implementierte Eigenschaften müssen sowohl get- als auch set-Accessoren definieren.