更改字典的键
本文关键字:字典 | 更新日期: 2023-09-27 18:37:09
我对字典很陌生。非常新的含义,我大约 6 小时前开始使用它们 :p. 无论如何,我想知道是否有办法更改字典的键。
这是我的字典:
Dictionary<string, string> Information = new Dictionary<string, string>();
以下是我添加到字典的方式(每次用户输入信息并点击按钮时都会触发:
Information.Add(txtObjectNumber.Text, addressCombined);
用户需要能够编辑这两个字段以及删除整个记录。
因此,应用程序几乎需要添加txtNumber
并txtComments
txtNumber = txtObjectNumber
谢谢你的帮助。
不能直接修改密钥。您必须删除它并重新添加它。
关键是允许您稍后查找数据("值")的机制。
例如,如果您这样做了
information.Add("Kris", "Vandermotten");
如果你知道"克里斯",你以后就能找到"范德莫滕"。
在这种情况下,改变"克里斯"意味着什么?您以"Kris"的名义输入数据,并想在搜索"Bob"时将其重新取出?你不会找到它。
在某种程度上,字典键非常类似于关系数据库中的主键。引用值的逻辑标识。因此,首先,他们应该唯一地识别它。
所以也许这个例子没有意义。也许像
information.Add(42, new Person("Kris", "Vandermotten")
更有意义。那么问题当然是:42是什么?有时这样的密钥有一个自然的候选者,比如员工编号或其他东西,有时没有。
当没有时,也许你需要做
List<Person> information = new List<Person>();
information.Add(new Person("Kris", "Vandermotten"));
当然,如果 Person 对象允许更改名字属性,而这正是您想要做的,那就去做吧。但是"更改字典键"对我来说没有多大意义。
字典使用内置的 Remove() 方法。或者,您可以通过循环访问集合来尝试。虽然我很好奇为什么你需要不断更新键,而不仅仅是值。
您无法更改现有词典项的键。您可以做的是删除以前的键并根据编辑添加新的键/值。
示例用例:
添加键:名称,值:鲍勃
现在你想把Name
改成FirstName
,你得做
从字典中删除键Name
添加键:名字,值:鲍勃
你在这里使用字典似乎有点不对劲。顾名思义,字典旨在为您提供一种基于键"查找"值的方法。但是,在您的情况下,您似乎正在使用它来存储两个相关的数据,其中任何一个都可以更改。在这种情况下,最好只使用列表,并创建一个单独的类来封装两条信息。类似的东西
public class MyData
{
public string SomeData { get; set; }
public string OtherData { get; set; }
}
然后
List<MyData> myDataList;
或者,您甚至可能希望有一个字典,将不变的键(可能是用户 ID)映射到自定义类:
Dictionary<string, MyData> myDataDictionary;