Frage

Gibt es einen Unterschied (Leistung, Aufwand) zwischen diesen zwei Arten der Initialisierung eines Objekts:

MyTypedDataSet aDataSet = new MyTypedDataSet();
aDataSet .Merge(anotherDataSet);
aDataSet .Merge(yetAnotherDataSet);

und

MyTypedDataSet aDataSet = anotherDataSet;
aDataSet .Merge(yetAnotherDataSet);

Was empfehlen Sie?

War es hilfreich?

Lösung

Während Keith richtig ist, nehme ich an dem Beispiel war einfach schlecht gewählt. Im Allgemeinen ist es besser, das „richtige“ Objekt von Anfang an zu initialisieren und nicht konstruiert einen Zwischen, leeres Objekt, wie in Ihrem Fall. Zwei Gründe:

  1. Performance. Dies sollte klar sein:. Objekterstellung kostet Zeit so zu schaffen weniger Objekte ist besser
  2. Much wichtiger ist es jedoch besser, sagt der Absicht . Sie tun im Allgemeinen nicht beabsichtigen staatenlos / leer Objekte zu erstellen. Vielmehr wollen Sie Objekte mit einem gewissen Zustand oder Inhalt erstellen. Tu es. Keine Notwendigkeit, ein nutzlos (weil leer) vorübergehend zu erstellen.

Andere Tipps

Diese beiden Linien verschiedene Dinge tun.

Die erste erzeugt einen neuen Satz und geht dann einen zweiten Satz hinein.

Die zweite setzt der DS auf den zweiten Satz an Referenzpunkt, so:

MyTypedDataSet ds1 = new MyTypedDataSet();
ds1.Merge(anotherDataSet);
//ds1 is a copy of anotherDataSet
ds1.Tables.Add("test")

//anotherDataSet does not contain the new table

MyTypedDataSet ds2 = anotherDataSet;
//ds12 actually points to anotherDataSet
ds2.Tables.Add("test");

//anotherDataSet now contains the new table

Ok, nehmen wir an, dass das, was Sie gemeint war:

MyClass o1 = new MyClass();
o1.LoadFrom( /* some data */ );

//vs

MyClass o2 = new MyClass( /* some data */ );

Dann ist die letztere besser, als die ehemaligen vor bevölkern sie ein leeres Objekt erstellt.

Allerdings, es sei denn eine leere Klasse initialisiert hat einen hohen Preis oder eine große Anzahl von Zeiten der Unterschied wiederholt ist nicht so wichtig.

Ihr zweites Beispiel hat nicht erstellen einen neuen Datensatz. Es ist nur ein zweiter Hinweis zu einem vorhandenen Datenmenge.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top