-1

このような辞書をどのように複製しますか :

Dictionary<int, List<User>>()

私がそれを複製しようとするたびに失敗します。

私がこれを持っている場合:

Dictionary<int, List<User>> dict1 = new Dictionary<int, List<User>>();
User user1=new User{Name="Mey"};
dict1.Add(1,user1);

これを行う:

var dict2 = new Dictionary<int, List<User>>(dict1);

dict2 は、新しい User オブジェクトではなく、引き続き user1 を参照します。

クローン プロパティの変更が元のオブジェクトに反映されないように、User オブジェクトを複製したいと考えています。

編集 :

そこで、次のコード スニペットを作成しました。

        var dict2 = new Dictionary<int, List<User>>();

        //clone the dict1 dictionary
        foreach (var item in dict1)
        {
            var list = new List<User>();
            foreach (var u in item.Value)
            {
                list.Add(new User{ Name = u.Name, Total=u.Total}); 
            }
            dict2.Add(item.Key, list);
        }

     class User
     { 
        public string Name{get;set;}
        public double Total{get;set;}
     }
4

2 に答える 2

3

.Net コレクションには組み込みの複製サポートがありません。

新しいディクショナリを作成し、元のディクショナリのすべてのエントリをループし、対応するエントリを新しいディクショナリに追加し、元のリストをループしてオブジェクトList<User>のコピーを新しいリストに追加する必要があります。User

于 2011-10-24T15:26:29.140 に答える
0

BinaryFormatterを使用できます。

1)オブジェクトを MemoryStream にシリアル 化します

したがって

2) MemoryStreamを新しいオブジェクトにデシリアライズする

于 2011-10-24T15:32:36.773 に答える