How to edit value data in a dictionary C#
本问题已经有最佳答案,请猛点这里访问。
我有一个成员字典,其中键是一个唯一的长ID,值是一个对象,其中包含该成员的名字姓氏和其他形式的成员详细信息的数据。在C中有什么方法可以做到这一点吗?
例如
dictionary key holds memberID 0 member
id 0 name is bob lives in Italybob moves to England
号
有没有办法更新C中的字典,让他的词条显示他住在英国?
假设
1 | members[0].Country ="England"; |
你只是在更新字典引用的对象。只需一步一步,它就相当于:
1 2 | Member member = members[0]; member.Country ="England"; |
号
只有一个对象代表Bob,不管你如何检索它。
实际上,如果您已经通过不同的变量访问
1 2 3 4 5 6 | // Assume this will fetch a reference to the same object as is referred // to by members[0]... Member bob = GetBob(); bob.Country ="England"; Console.WriteLine(members[0].Country); // Prints England |
如果
对于类(至少是可变类),这应该简单如下:
1 2 | long theId = ... yourDictionary[theId].Country ="England"; // fetch and mutate |
。
对于结构(应该是不可变的;或者对于不可变的类),您需要获取、重新创建和覆盖:
1 2 3 4 | long theId = ... var oldItem = yourDictionary[theId]; // fetch var newItem = new SomeType(oldItem.Id, oldItem.Name,"England"); // re-create yourDictionary[theId] = newItem; // overwrite |
(显然,重新创建的行需要调整到特定对象)
在易变结构的邪恶邪恶世界中(见注释),一旦它在一个变量中,你就可以变异:
1 2 3 4 | long theId = ... var item = yourDictionary[theId]; // fetch item.Country ="England"; // mutate yourDictionary[theId] = item; // overwrite |
。
嗯,我不能超过马克或乔恩,但我的条目是:(我用城市而不是国家,但概念是一样的。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System; using System.Collections.Generic; public class MyClass { public static void Main() { var dict = new Dictionary<int, Member>(); dict.Add(123, new Member("Jonh")); dict.Add(908, new Member("Andy")); dict.Add(456, new Member("Sarah")); dict[456].City ="London"; Console.WriteLine(dict[456].MemberName +"" + dict[456].City); Console.ReadKey(); } } public class Member { public Member(string name) {MemberName = name; City="Austin";} public string MemberName { get; set; } public string City { get; set; } // etc... } |
1 | dictionary[memberID].Location ="Italy"; |
。