Ich sah irgendwo so etwas wie das Folgende und fragte mich, was es bedeutete. Ich weiß, dass sie Getter und Setter sind, möchte aber wissen, warum der String-Typ so definiert ist. Danke für die Hilfe.
public string Type { get; set; }
c#
getter-setter
Maya
quelle
quelle
"Type"
.NETSystem.string
. Da ist nichts mehr dran.Antworten:
Dies sind automatisch implementierte Eigenschaften (kurz Auto-Eigenschaften).
Der Compiler generiert automatisch das Äquivalent der folgenden einfachen Implementierung:
quelle
public int b { get { return b * 2; } }
kein zweites Feld schreiben . Aber ich denke, wenn Sie den Setter mit einem Körper haben, dann brauchen Sie das zweite Feld. Und dieser zeigt einen Setter mit einem Körper. Obwohl es das gleiche tut wie der Einzeiler des Fragestellers.=>
Syntax und kein return-Schlüsselwort. Obwohl ich das nicht im Sinn hatte. Ich dachte daran, dass das zweite Feld unnötig ist, obwohl ich seitdem festgestellt habe, dass das zweite Feld manchmal notwendig ist. In dem Beispiel hier ist das zweite Feld nicht erforderlich (weil ein Standardsetzer ohne Körper dies tun würde), aber der Antwortende hat es eingegeben (Setterkörper und zweites Feld), um dem Fragesteller zu erklären, was ihre Zeile ohne das ist Das zweite Feld war fertig.Das ist eine Auto-Eigenschaft und es ist die Kurzschreibweise dafür:
quelle
<Type>k__BackingField
mit Reflexion sehen können.In C # 6:
Es ist jetzt möglich, die Auto-Eigenschaften nur als Feld zu deklarieren:
Schreibgeschützte Auto-Eigenschaften
quelle
Ist nicht anders als zu tun
quelle
Dies bedeutet, dass der Compiler zur Laufzeit ein Hintergrundfeld definiert. Dies ist die Syntax für automatisch implementierte Eigenschaften.
Weitere Informationen: Automatisch implementierte Eigenschaften
quelle
Es ist eine automatisch gesicherte Eigenschaft, die im Grunde gleichbedeutend ist mit
quelle
Diese werden als automatische Eigenschaften bezeichnet.
http://msdn.microsoft.com/en-us/library/bb384054.aspx
Funktionell (und in Bezug auf die kompilierte IL) sind sie dieselben wie Eigenschaften mit Hintergrundfeldern.
quelle
Ich weiß, dass dies eine alte Frage ist, aber mit der Veröffentlichung von C # 6 können Sie jetzt so etwas für private Immobilien tun.
quelle
Sie können auch einen Lambda-Ausdruck verwenden
quelle