0

让我们告诉我有字典的二维数组:

public Dictionary<int, string>[,] mat = new Dictionary<int, string>[3, 5]
{
  { new Dictionary<int, string>(), new Dictionary<int, string>(), new Dictionary<int, string>() },
  { new Dictionary<int, string>(), new Dictionary<int, string>(), new Dictionary<int, string>() },
  { new Dictionary<int, string>(), new Dictionary<int, string>(), new Dictionary<int, string>() },
  { new Dictionary<int, string>(), new Dictionary<int, string>(), new Dictionary<int, string>() },           
  { new Dictionary<int, string>(), new Dictionary<int, string>(), new Dictionary<int, string>() }
}

我需要把它复制到另一个。我尝试了所有方法。
就像是:

matNew = mat;

但是当我更改第一个时,它仍然会自动更改第二个。
我真的不知道该怎么做。

4

1 回答 1

2

我假设你想要一个深拷贝?

var matNew = new Dictionary<int, string>[mat.GetLength(0), mat.GetLength(1)];
for (int i = 0; i < mat.GetLength(0); ++i)
    for (int j = 0; j < mat.GetLength(1); ++j)
        matNew[i, j] = new Dictionary<int, string>(mat[i, j]);

构造函数复制指定字典中的Dictionary(IDictionary<TKey, TValue>)所有元素,并且可能是执行现有字典的浅克隆的最快方法。这适合您的情况,因为您的键和值都是不可变的(intstring)。

于 2012-04-06T17:58:31.187 回答