是否有差别(表现,开销)之间这两种方式的初始化的对象:

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

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

其中你建议?

有帮助吗?

解决方案

同时,凯斯是正确的,我想是的例子是只糟糕的选择。一般来说,它是更好的初始化"正确的"对象从一开始就和 构造的中间体,空物体作为你的情况。两个原因:

  1. 性能。这应该是显而易见的:目的创建费用的时间,所以创建小目的是更好。
  2. 很多 更重要的,然而,更好的国您 意图.你做一般 打算创建的无国籍/空对象。相反,你打算创建的对象与一些国家或内容。这样做。没有必要建立一个无用(因为空)暂时的。

其他提示

这两条线做不同的事情。

第一个创建一个新的设置,然后合并的第二组成。

第二个集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 */ );

然后后者是更好,因为前者创建一个空物之前填充。

然而,除非初始化的一个空类具有较高的成本或是重复大量的时间差别不是那么重要。

你的第二个例子不会 创建一个新的数据集。这只是第二 参考 到现有的数据集。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top