Verschachtelte Objekt-Initialisierer-syntax
Resharper hat gerade vorgeschlagen, die folgenden refactoring zu mir:
//Constructor initializes InitializedProperty but
//the UninitializedSubproperty is uninitialized.
var myInstance = new MyClass();
myInstance.InitializedProperty.UninitializedSubproperty = new MyOtherClass();
//becomes
var myInstance = new MyClass
{
InitializedProperty = { UninitializedSubproperty = new MyOtherClass() }
};
Habe ich noch nie gesehen, diese Art der Objekt-Initialisierung vor. Insbesondere sehe ich nicht, wie
InitializedProperty = { UninitializedSubproperty = new MyOtherClass() }
macht keinen Sinn - es ist nicht zuweisen etwas zu InitializedProperty
.
Ist dieses Verhalten überall angegeben?
mögliche Duplikate von Initialisierer-syntax
Sie können daran interessiert sein, diesem post, die beschreibt die Semantik und die Anwendungsfälle für diese Art der Initialisierung
Sie können daran interessiert sein, diesem post, die beschreibt die Semantik und die Anwendungsfälle für diese Art der Initialisierung
InformationsquelleAutor Rawling | 2013-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese syntax nennt Objekt-Initialisierung. C# - Spezifikation klar, gibt auch sehr viele Beispiele zu diesem Thema:
7.6.10.2 objektinitialisierer
Beispiele sind:
Kompiliert sich auf:
Mit:
und
Lesen Sie auch ein großes Kapitel 8.3 Vereinfachte Initialisierung in C# in der Tiefe Buch. Jon Skeet bietet einen Blick auf die Vorteile der Verwendung dieser Art von syntax bei der Initialisierung von baumartigen Strukturen.
ja, es ist ein pseudocode für
object-initializer
als C# - Spezifikation gibt für alle Konstrukte. Ich wollte nicht zu bringen, dass hier, weil die Formatierung vollständig verloren war.Welche version des standard beziehen Sie sich? Soweit ich sagen kann, der betreffende Abschnitt ist 7.6.10.2 in der version 4.5 und 5.0.
aktualisiert meine Antwort, danke
InformationsquelleAutor Ilya Ivanov