Gibt es einen Vorteil der Verwendung eines Objektinitialisierers?
Gibt es irgendwelche Vorteile in der Verwendung von C# - Objekt-Initialisierungen?
In C++ gibt es keine Hinweise-und alles ist gekapselt in ein Objekt, damit es Sinn macht, Sie zu benutzen anstelle der Initialisierung der Mitglieder nach Objekterstellung.
Was der Fall ist, ist für den Einsatz in C#?
InformationsquelleAutor der Frage wayfare | 2012-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein oft übersehen Vorteil ist Atomarität. Dies ist nützlich, wenn Sie mit double-checked-locking auf ein Objekt. Der Objekt-Initialisierer gibt das neue Objekt nach der Initialisierung alle die Mitglieder, die Sie erzählt. Aus dem Beispiel auf der MSDN-Artikel:
Übersetzt werden würde, um so etwas wie die folgenden:
Dadurch wird sichergestellt, dass
student
ist nie teilweise initialisiert. Es wird entwedernull
oder vollständig initialisiert ist, die nützlich in multi-threaded-Szenarien.Weitere Infos hierzu können Sie aus diese Artikel.
Ein weiterer Vorteil ist, dass es ermöglicht Ihnen das erstellen anonyme Objekte (zum Beispiel eine Projektion oder join auf mehrere Schlüssel in LINQ).
InformationsquelleAutor der Antwort Jon Senchyna
Es ist ein potenzieller Grund zum nicht verwenden Sie objektinitialisierer: Wenn es eine Ausnahme, die während der Initialisierung, den Aufruf-stack in der Visual Studio-debugger wird nur die Rückkehr Initialisierung Ausdruck und nicht die bestimmte Zeile, wo die exception aufgetreten ist.
Wenn Sie Bibliotheken oder externe Dienste, die schlecht benannte Ausnahmen, oder alternativ verwenden Sie Bibliotheken, die nativen code, wo Sie können nicht sehen, den code, der die Ausnahme ausgelöst (z.B. Xamarin auf Android), Objekt-Initialisierungen machen es schwieriger, den code Debuggen, da Sie nicht wissen, welche parameter die die Ausnahme verursacht hat, geworfen zu werden.
Beispiel: Stell dir vor das ist dein code, aber dass Sie nicht Lesen können, die Quelle der ExternalService, da es außerhalb Ihrer Anwendung. Sie werden nicht wissen, dass es die "charlie" - parameter, der den Fehler verursacht hat, in ExternalService.
InformationsquelleAutor der Antwort Geir Smestad
Vorteile bei der Verwendung von anonymous-objects, linq-Abfragen, manchmal unnötig überladen von Konstruktoren nur zum übergeben von Parametern
InformationsquelleAutor der Antwort AD.Net
Ich denke, dass es fördert die Lesbarkeit.
Als seitliche Anmerkung, die in dem Beispiel in den link gezeigt, die ich manchmal lieber über ein eigenes setter für die properties (Vorname und Nachname), aber dies hängt von Ihrem design.
InformationsquelleAutor der Antwort Kirby
Es gibt 3 wichtigsten Vorteile der Objekt-Initialisierung
Vermeiden viele Tastenanschläge,Die Effizienz der software-Programme wird manchmal gemessen durch die Anzahl von Tastenanschlägen, die benötigt wird, um schreiben Sie eine spezifische Funktion.
Leicht lesbar und wartbar.
Zeitersparnis Ansatz.
Sehen Sie hier, wie Sie können vermeiden, viele Tastenanschläge:
Vor c# 3.0 wurden wir dabei Initialisierung, wie dies-
Nun nach c# 3.0 initialisieren wir in einer Zeile wie folgt.
InformationsquelleAutor der Antwort Debendra Dash