我对词典很新。我大约6小时前开始使用它们的新意义:p。无论如何,我想知道是否有办法改变字典的键。
这是我的字典:
Dictionary<string, string> Information = new Dictionary<string, string>();
以下是我添加到词典中的方法(每次用户输入信息并点击按钮时都会触发该词:
Information.Add(txtObjectNumber.Text, addressCombined);
用户需要能够编辑这两个字段以及删除整个记录。
因此,应用程序需要添加txtNumber
和txtComments
txtNumber = txtObjectNumber
感谢您的帮助。
答案 0 :(得分:11)
无法直接修改密钥。您必须将其删除并重新添加。
答案 1 :(得分:3)
关键是允许您稍后查找数据(“值”)的机制。
例如,如果你做了
information.Add("Kris", "Vandermotten");
如果你知道“Kris”,你可以稍后找到“Vandermotten”。
现在在这种背景下,改变“Kris”意味着什么?你把数据放在“Kris”的名下,想要找回“Bob”吗?你找不到它。
在某种程度上,字典键与关系数据库中的主键非常相似。引用值的逻辑标识。所以一方面,他们应该唯一地识别它。
所以也许这个例子没有意义。也许像是
information.Add(42, new Person("Kris", "Vandermotten")
更有意义。那么问题当然是:42是什么?有时会有这样一个密钥的自然候选人,比如雇员号码或其他东西,有时却没有。
如果没有,也许你需要做
List<Person> information = new List<Person>();
information.Add(new Person("Kris", "Vandermotten"));
当然,如果Person对象允许更改名字属性,那就是你想要做的,那就去做吧。但是“改变字典键”对我来说并没有多大意义。
答案 2 :(得分:1)
您可以使用Dictionary的内置Remove()方法。或者你可以通过迭代集合来艰难地完成它。虽然我很好奇为什么你需要不断更新密钥,而不仅仅是值。
答案 3 :(得分:0)
您无法更改现有词典项的键。您可以做的是删除上一个键并根据编辑添加新的键/值。
示例用例:
添加密钥:名称,值:Bob
现在您要将Name
更改为FirstName
,您必须执行
从词典中删除键Name
添加键:FirstName,值:Bob
答案 4 :(得分:0)
你在这里使用字典似乎有点过时了。顾名思义,字典旨在为您提供一种基于密钥“查找”值的方法。但是,在您的情况下,您似乎正在使用它来存储两个相关的数据,其中任何一个都可以更改。在这种情况下,您可能最好只使用一个列表,并创建一个封装两条信息的单独类。像
这样的东西public class MyData
{
public string SomeData { get; set; }
public string OtherData { get; set; }
}
然后
List<MyData> myDataList;
或者,您甚至可能希望拥有一个将不变的密钥(可能是用户ID)映射到自定义类的字典:
Dictionary<string, MyData> myDataDictionary;