按值传递参考类型

时间:2017-10-06 16:02:52

标签: c# parameter-passing

以下帖子对传递的参考类型非常有用。但是,我现在有一个解决这种行为的实际问题。我正在使用以下代码将DataTable传递到第二个窗口;

Window2.LoadedTblData = _loadedTblData;

一旦通过,我希望用户能够继续使用Window1(这意味着操作_loadedTblData)而不会影响Window2中的数据。即我希望按值传递表,而不是通过引用传递。我该怎么做?

Why is list when passed without ref to a function acting like passed with ref?

2 个答案:

答案 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的更多信息。