Was macht "=" in .Net C # beim Deklarieren einer Eigenschaft? [Duplikat]

8

Ich habe diese Art von Eigenschaftsdeklaration in einem .NET 4.6.1 C # -Projekt gesehen

%Vor%

Ich bin es gewohnt, schreibgeschützte Eigenschaften wie folgt zu deklarieren:

%Vor%

Ich verstehe, dass es einige Unterschiede zwischen den beiden gibt (die erste erstellt ein neues Objekt), aber ich hätte gerne eine tiefere Erklärung sowie einige Hinweise, wann ich sie verwenden soll.

    
Karoline Brynildsen 18.02.2016, 13:10
quelle

2 Antworten

14

Die erste verwendet die Syntax new-to-C # -6 ausdrucksbasierter Member . Es entspricht:

%Vor%

Die zweite ist auch neu in C # 6 - eine automatisch implementierte schreibgeschützte Eigenschaft. Es entspricht:

%Vor%

Sie können MyObject nur innerhalb eines Konstruktors in der deklarierenden Klasse zuweisen, die stattdessen nur dem Feld zugewiesen wird.

(Diese beiden "Äquivalenzen" verwenden Old-School-Property-Deklarationen, in denen Sie immer get , set oder beide als Blöcke mit Code haben.)

    
Jon Skeet 18.02.2016, 13:12
quelle
3

C # 6 wertet den Ausdruck auf der rechten Seite der Pfeilfunktion jedes Mal aus, wenn Sie den Eigenschaften-Getter aufrufen.

In Ihrem Fall würden Sie jedes Mal ein new object() instanziieren.

Im anderen Fall würde es aus dem Hintergrundfeld der Eigenschaft lesen.

    
MichaC 18.02.2016 13:11
quelle

Tags und Links