我在这里挠我的脑袋......我有一个我用C#编写的大程序,里面有一个小错误,它对我来说绝对没有意义。我通过引用并没有做它应该做的事
非常快背景:
我有一个叫CompoundSet
类,它包含一个DataSet
(不System.Data.DataSet
,这是我自己定义的类),它是这样定义的:
public class CompoundSet
{
private DataSet dataSet;
public DataSet { get { return dataSet; } }
//...
}
compountSet
是本地成员在我的主要工作流程类别中,我将启动如下数据编辑器窗口:
DataWindow dw = new DataWindow(compoundSet.DataSet);
为DataWindow
的构造是这样的:
public DataWindow(DataSet dataSet)
{
// ...
this.dataSet = dataSet;
}
和数据窗口列出了各种GUI控制DataSet
的内容。
该窗口显示DataSet中当前的内容。用户可以根据需要修改数据。当他们关闭dw
时,数据的更改应该在CompoundSet
之内,因为我们只传递指针。 DataSet
在compoundSet
和DataSet
在dw
应该是相同的,但事实并非如此。
如果我在关闭事件的DataWindow
类中设置了一个断点,我可以看到本地dw.dataSet
和WorkFlow.compoundSet.DataSet
没有相同的信息。
既然我已经通过了一个指向compoundSet.DataSet
在构造函数中的DataWindow
类,我在DataWindow
无处使用new
关键字,这没有任何意义,我?
为什么我的compoundSet.DataSet
与我的dw.dataSet
不同?
编辑:我曾尝试创建一个DataWindow
这样的:
DataSet ds = compoundSet.DataSet;
DataWindow dw = new DataWindow(ds);
dw.ShowDialog(this); // breakpoint on dw.FormClosing shows the dataset has new data
return; // breakpoint here shows ds is different from dw.dataSet
偶然,是'DataSet'结构? – 2012-02-29 06:08:52
@ J.N。绝对不是:)我希望它是那么简单... – Ozzah 2012-02-29 06:09:28
一些代码,您实际上将新项目设置到您的DataSet会很有趣。你只是修改DataSet的底层属性或DataSet对象本身? – Alex 2012-02-29 06:17:57