2017-04-17 1 views
2

Ich fragte mich schon eine Weile, welche Vor- und Nachteile gibt es eine Eigenschaft mit den Modifikatoren Get und Private Set im Vergleich zu einer Eigenschaft, die ein privates Feld zurückgibt.C# Get und Private Set vs Holen Sie sich zurück Private Feld

Hier ist ein Beispiel:

public bool Example { get; private set; } 

und

private bool example; 
public bool Example { get { return example; } } 

Was sind die Nachteile und Vorteile des einen über den anderen verwenden?

+0

ich bei der Kompilierung denke, der Unterschied zwischen der zwei geht weg. Die "bekommen; Private Set; 'ist nur Syntax Zucker, nur eine Codierung Verknüpfung. –

Antwort

4

1 weniger Codezeile. Abgesehen davon sind sie genau die gleiche Funktionalität. Es ist im Wesentlichen syntaktischer Zucker.

+3

... und das zweite Beispiel ist vollständig _read-only_ Eigenschaft, während die 1. AIP einen privaten Setter haben. – Nikita

+2

Nicht wirklich, da Sie immer noch Zugriff auf das variable Element haben. Eine wirklich schreibgeschützte Eigenschaft hätte keinen Satz und kann nur bei der Konstruktion initialisiert werden. – Phil1970

0

Es gibt einige Dinge, auch wenn es mit Auto-get-Set eine Syntax Zucker ist, meiner Meinung nach hängt es von dem Design

public bool Example { get; set; } 

Die obige Linie ein eigenes zurückes Feld von Compiler erstellt haben die wir habe keinen Zugang. Aber wenn ein Trägerfeld schaffen wir Zugang davon haben und wir können es für NULL-Prüfung wie die Verwendung unter einem

private bool example; 
public bool Example 
{ 
get 
{ 
    return example; 
} 
set 
{ 
    if(value != example) 
    { 
     example = value; 
     // here you can write some property change notifications or some other logic. 
    } 
} 
} 

So oder so Endergebnis ist dasselbe