C# 按值传递引用类型

C# 按值传递引用类型,c#,parameter-passing,C#,Parameter Passing,下面的帖子提供了大量关于传递引用类型的信息。然而,我现在有一个实际问题,就是如何避免这种行为。我用下面的代码将数据表传递给第二个窗口 Window2.LoadedTblData = _loadedTblData; 一旦通过,我希望用户能够继续使用Window1(这意味着操作\u loadedBlData),而不会影响Window2中的数据。也就是说,我希望通过值传递表格,而不是通过引用。我该怎么做 这是因为两个窗口都引用了同一个实际对象实例 您需要创建datatable的副本,并将副本传递到另

下面的帖子提供了大量关于传递引用类型的信息。然而,我现在有一个实际问题,就是如何避免这种行为。我用下面的代码将数据表传递给第二个窗口

Window2.LoadedTblData = _loadedTblData;
一旦通过,我希望用户能够继续使用Window1(这意味着操作
\u loadedBlData
),而不会影响Window2中的数据。也就是说,我希望通过值传递表格,而不是通过引用。我该怎么做


这是因为两个窗口都引用了同一个实际对象实例

您需要创建datatable的副本,并将副本传递到另一个窗口


这是因为两个窗口都引用了同一个实际对象实例

您需要创建datatable的副本,并将副本传递到另一个窗口


如果您希望在每个窗口中都有表的结构和数据的副本,则需要使用DataTable.copy而不是DataTable.Clone


有关复制的详细信息。

如果您希望在每个窗口中都有表的结构和数据的副本,则需要使用DataTable.Copy而不是DataTable.Clone


有关复制的更多信息。

只是对术语的更正:你不会说你想“按值传递表”,而是想“传递表的副本”。因此,问题是……你的问题是:如何创建DataTable的副本,以便副本中的任何修改都不会反映在原始副本中。这个问题是使用关于值/引用类型和传递值/引用语义的错误假设提出的。如果你想回答这个问题,你应该提出一个单独的问题当我说“通过值传递表”时,我指的是表数据。我想这在我如何解释我的意图中是非常清楚的。我理解传递一个表意味着传递一个引用,但在我看来,这显然不是我说“不通过引用”的意图。无论如何,有人提供了我所希望的答案,所以我不认为需要新的问题。只是更正一下你的术语:你不会说你想“按值传递表格”,而是想“传递表格副本”.因此,问题是…您的问题是:如何创建DataTable的副本,以便副本中的任何修改都不会反映在原始数据中。这个问题是使用关于值/引用类型和传递值/引用语义的错误假设提出的。如果你想回答这个问题,你应该提出一个单独的问题当我说“通过值传递表”时,我指的是表数据。我想这在我如何解释我的意图中是非常清楚的。我理解传递一个表意味着传递一个引用,但在我看来,这显然不是我说“不通过引用”的意图。无论如何,有人提供了我希望的答案,所以我不认为需要新的问题。