C# 数据集合并之间的差异
这两种合并数据集的方法之间是否存在差异(性能、开销)C# 数据集合并之间的差异,c#,object,initialization,dataset,C#,Object,Initialization,Dataset,这两种合并数据集的方法之间是否存在差异(性能、开销) MyTypedDataSet aDataSet = new MyTypedDataSet(); aDataSet .Merge(anotherDataSet); aDataSet .Merge(yetAnotherDataSet); 及 你推荐哪一种?这两条线的功能不同 第一个创建一个新集合,然后将第二个集合合并到其中 第二组将ds引用设置为指向第二组,因此: MyTypedDataSet ds1 = new MyTypedDataSet(
MyTypedDataSet aDataSet = new MyTypedDataSet();
aDataSet .Merge(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 */ );
后者更好,因为前者在填充之前创建一个空对象
但是,除非初始化空类的成本很高或重复了大量次,否则差异并不是那么重要。您的第二个示例不会创建新的数据集。这只是对现有数据集的第二次引用。虽然Keith是对的,但我认为这个例子选择得很糟糕。通常,最好从一开始就初始化为“right”对象,而不是像您的情况那样构造一个中间的空对象。原因有二:
此外,对于某些情况(但不是示例),如果在创建时完全初始化对象,则对象可能是不可变的。标题完全错误-这不是关于对象初始化的问题,而是关于DataSet.Merge方法的问题
MyClass o1 = new MyClass();
o1.LoadFrom( /* some data */ );
//vs
MyClass o2 = new MyClass( /* some data */ );