Rozdíl v DataSet inicializace v jazyce C #

hlasů
-1

Je nějaký rozdíl (performance, režie) mezi těmito dvěma způsoby inicializace objektu:

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

a

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

Který mi doporučujete?

Položena 11/09/2008 v 15:54
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
5

Tyto dva řádky dělat různé věci.

První z nich vytvoří novou sadu a pak sloučí druhou sadu do něj.

Druhý nastaví ds odkazem na bod na druhém setu, takže:

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, předpokládejme, že to, co jste měl na mysli bylo:

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

//vs

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

Pak druhý je lepší, protože bývalý vytvoří prázdný objekt před vyplnění ji.

Nicméně, pokud inicializaci prázdnou třídu má vysokou cenu, nebo se opakuje mnohokrát rozdíl není tak důležité.

Odpovězeno 11/09/2008 v 15:55
zdroj uživatelem

hlasů
4

Váš druhý příklad však není vytvořit novou datovou sadu. Je to jen druhý odkaz na existující datové sady.

Odpovězeno 11/09/2008 v 15:56
zdroj uživatelem

hlasů
1

Zatímco Keith má pravdu, myslím, že uvedený příklad prostě špatně vybrán. Obecně platí, že je lepší se inicializovat na „správné“ objekt od začátku a ne postavit prostřední prázdný objekt jako ve vašem případě. Ze dvou důvodů:

  1. Výkon. To by mělo být jasné: náklady na vytvoření objektu čas tak vytváří méně objektů je lepší.
  2. Mnohem důležitější však je lépe uvádí svůj záměr . Ty obvykle nejsou v úmyslu vytvořit bez státní příslušnosti / prázdné objekty. Spíše máte v úmyslu vytvářet objekty s některými stavu nebo obsahu. Udělej to. Není třeba vytvářet zbytečná (protože prázdný) dočasné.
Odpovězeno 11/09/2008 v 15:58
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more