Question

Y a-t-il une différence (performances, surcharge) entre ces deux manières d'initialiser un objet :

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

et

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

Lequel recommandez-vous ?

Était-ce utile?

La solution

Même si Keith a raison, je suppose que l’exemple a tout simplement été mal choisi.Généralement, il est préférable d'initialiser le « bon » objet dès le début et pas construisez un objet intermédiaire vide comme dans votre cas.Deux raisons:

  1. Performance.Cela devrait être évident :La création d’objets prend du temps, il est donc préférable de créer moins d’objets.
  2. Beaucoup plus important cependant, il indique mieux votre intention.Vous faites généralement pas l'intention de créer des objets apatrides/vides.Vous avez plutôt l'intention de créer des objets avec un état ou un contenu.Fais-le.Pas besoin de créer un temporaire inutile (car vide).

Autres conseils

Ces deux lignes font des choses différentes.

Le premier crée un nouvel ensemble, puis y fusionne un deuxième ensemble.

Le second définit la référence ds pour qu'elle pointe vers le deuxième ensemble, donc :

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, supposons que ce que vous vouliez dire était :

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

//vs

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

Alors cette dernière solution est meilleure, car la première crée un objet vide avant de le remplir.

Cependant, à moins que l'initialisation d'une classe vide ait un coût élevé ou soit répétée un grand nombre de fois, la différence n'est pas si importante.

Votre deuxième exemple fait pas créer un nouvel ensemble de données.C'est juste une seconde référence à un ensemble de données existant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top