以下帖子对传递的参考类型非常有用。但是,我现在有一个解决这种行为的实际问题。我正在使用以下代码将DataTable传递到第二个窗口;
Window2.LoadedTblData = _loadedTblData;
一旦通过,我希望用户能够继续使用Window1(这意味着操作_loadedTblData
)而不会影响Window2中的数据。即我希望按值传递表,而不是通过引用传递。我该怎么做?
Why is list when passed without ref to a function acting like passed with ref?
答案 0 :(得分:3)
这是因为两个窗口都引用了相同的实际对象实例。
您需要复制数据表并将副本传递到另一个窗口。
https://msdn.microsoft.com/en-us/library/system.data.datatable.copy(v=vs.110).aspx
答案 1 :(得分:2)
如果您希望在每个窗口中都拥有表格的结构和数据的副本,那么您需要使用 DataTable.Copy 而不是DataTable.Clone。< / p>
有关复制here的更多信息。