这两种合并数据集的方式之间是否存在差异(性能、开销)?
MyTypedDataSet aDataSet = new MyTypedDataSet();
aDataSet .Merge(anotherDataSet);
aDataSet .Merge(yetAnotherDataSet);
和
MyTypedDataSet aDataSet = anotherDataSet;
aDataSet .Merge(yetAnotherDataSet);
你推荐哪个?
这两种合并数据集的方式之间是否存在差异(性能、开销)?
MyTypedDataSet aDataSet = new MyTypedDataSet();
aDataSet .Merge(anotherDataSet);
aDataSet .Merge(yetAnotherDataSet);
和
MyTypedDataSet aDataSet = anotherDataSet;
aDataSet .Merge(yetAnotherDataSet);
你推荐哪个?
这两条线做不同的事情。
第一个创建一个新集合,然后将第二个集合合并到其中。
第二个将 ds 引用设置为指向第二个集合,因此:
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
好的,假设您的意思是:
MyClass o1 = new MyClass();
o1.LoadFrom( /* some data */ );
//vs
MyClass o2 = new MyClass( /* some data */ );
然后后者更好,因为前者在填充之前创建了一个空对象。
但是,除非初始化一个空类的成本很高或重复很多次,否则差异并不那么重要。
您的第二个示例不会创建新数据集。这只是对现有数据集的第二次引用。
虽然基思是对的,但我想这个例子只是选错了。通常,最好从一开始就初始化为“正确”的对象,而不是像您的情况那样构造一个中间的空对象。两个原因: