C #, Unterschied zwischen Eigenschaft mit Variable und ohne Variable [Duplikat]

8

Ich kenne die Grundfunktionalität von Eigenschaften. Aber wenn ich durch die Dokumentation gehe, sehe ich, dass sie nur mit Get Set und ohne Variablen deklariert sind.

Was ist der Unterschied zwischen diesen beiden

? %Vor%

und

%Vor%

Ist es einfach eine einfachere Art zu schreiben, die als .net Frameworks aktualisiert wurde. Oder gibt es funktionelle Unterschiede?

    
Kuntady Nithesh 06.09.2011, 05:27
quelle

6 Antworten

6

Letzteres wird als Automatic Property bezeichnet und ist das gleiche. Sie wurden in C # 3 eingeführt. Sie können hier mehr darüber lesen: Ссылка

Einfach ausgedrückt, Automatische Eigenschaften sind syntaktischer Zucker, so dass der Entwickler weniger Code eingeben muss und der Compiler das private Feld und den öffentlichen Setter und Getter für Sie erzeugt.

    
Paul 06.09.2011, 05:29
quelle
3

Dies wird als automatische Eigenschaft bezeichnet. Es gibt keinen funktionalen Unterschied. Die letztere Syntax ist nur eine Kurzform der ersten.

In Abschnitt 10.7.3 der C # -Spezifikation finden Sie weitere Einzelheiten:

  

Wenn eine Eigenschaft als automatisch implementierte Eigenschaft angegeben wird, ist automatisch ein verborgenes Hintergrundfeld für die Eigenschaft verfügbar, und die Zugriffsmethoden werden zum Lesen und Schreiben in dieses Hintergrundfeld implementiert.

     

Das folgende Beispiel:

%Vor%
  

entspricht der folgenden Deklaration:

%Vor%     
vcsjones 06.09.2011 05:30
quelle
0

Es heißt Auto-Eigenschaften und ist nur eine einfachere Möglichkeit, sie zu schreiben, wenn Sie keine Logik innerhalb der Eigenschaft benötigen. Beim Kompilieren generiert der Compiler automatisch eine Sicherungsvariable für die Eigenschaft, so dass sie genau gleich ist.

Es ist einfach, die Eigenschaft in eine Eigenschaft mit einem Backing-Feld und einer Logik später zu ändern, und das bricht nicht einen von dieser Eigenschaft abhängigen Code, wenn Sie stattdessen zuerst ein öffentliches Feld verwenden und änderte es dann in eine Eigenschaft, die Sie den Code brechen würden, der auf diesem Feld / dieser Eigenschaft beruhte.

    
Øyvind Bråthen 06.09.2011 05:30
quelle
0

Der zweite Weg ist eigentlich die automatische Eigenschaft, die das Hintergrundfeld implizit implementiert, was bedeutet, dass Sie den generierten Feldnamen nicht beeinflussen können.

In den meisten Fällen ist es Ihnen egal, aber in Szenarien, in denen Sie Objekte zwischen Ebenen mit Serialisierung / Deserialisierung übergeben, hätten Sie in einigen Fällen explizit ein Hintergrundfeld erstellt, um __propBackingField2735t34 wie Namen loszuwerden der Kunde.

Auch in explizit codierten Eigenschaften kann eine Logik für die Validierung enthalten sein, was bei Autoproperiten nicht der Fall ist

    
vittore 06.09.2011 05:32
quelle
0

Dies ist eine Erweiterung von C # 3.0, die als automatisch implementierte Eigenschaften bezeichnet wird. Ein automatisches Hintergrundfeld wird automatisch vom Compiler im Hintergrund erstellt.

    
V4Vendetta 06.09.2011 05:32
quelle
0

es gibt keinen funktionalen Unterschied als solche .. aber wenn Sie mehr Funktionalität auf Ihrer Eigenschaft Einstellung / bekommen möchten, können Sie die Version mit den privaten Variablen verwenden.

%Vor%

Ansonsten können Sie einfach die Version ohne die privaten Variablen verwenden.

    
Illuminati 06.09.2011 05:32
quelle