Diferencia en la inicialización del conjunto de datos en C#
-
09-06-2019 - |
Pregunta
¿Existe alguna diferencia (rendimiento, gastos generales) entre estas dos formas de inicializar un objeto?
MyTypedDataSet aDataSet = new MyTypedDataSet();
aDataSet .Merge(anotherDataSet);
aDataSet .Merge(yetAnotherDataSet);
y
MyTypedDataSet aDataSet = anotherDataSet;
aDataSet .Merge(yetAnotherDataSet);
¿Cuál recomiendas?
Solución
Si bien Keith tiene razón, supongo que el ejemplo simplemente fue mal elegido.Generalmente, es mejor inicializar el objeto "correcto" desde el principio y no construya un objeto intermedio vacío como en su caso.Dos razones:
- Actuación.Esto debería ser obvio:La creación de objetos cuesta tiempo, por lo que es mejor crear menos objetos.
- Mucho Sin embargo, lo más importante es que expresa mejor su intención.generalmente lo haces no tiene la intención de crear objetos sin estado/vacíos.Más bien, pretende crear objetos con algún estado o contenido.Hazlo.No es necesario crear un temporal inútil (porque está vacío).
Otros consejos
Esas dos líneas hacen cosas diferentes.
El primero crea un nuevo conjunto y luego fusiona un segundo conjunto en él.
El segundo establece la referencia ds para que apunte al segundo conjunto, por lo que:
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, supongamos que lo que quisiste decir fue:
MyClass o1 = new MyClass();
o1.LoadFrom( /* some data */ );
//vs
MyClass o2 = new MyClass( /* some data */ );
Entonces lo último es mejor, ya que el primero crea un objeto vacío antes de llenarlo.
Sin embargo, a menos que inicializar una clase vacía tenga un coste elevado o se repita un gran número de veces, la diferencia no es tan importante.
Tu segundo ejemplo lo hace no crear un nuevo conjunto de datos.es solo un segundo referencia a un conjunto de datos existente.