更改字典的键

本文关键字:字典 | 更新日期: 2023-09-27 18:37:09

我对字典很陌生。非常新的含义,我大约 6 小时前开始使用它们 :p. 无论如何,我想知道是否有办法更改字典的键。

这是我的字典:

Dictionary<string, string> Information = new Dictionary<string, string>();

以下是我添加到字典的方式(每次用户输入信息并点击按钮时都会触发:

Information.Add(txtObjectNumber.Text, addressCombined);

用户需要能够编辑这两个字段以及删除整个记录。

因此,应用程序几乎需要添加txtNumbertxtComments 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;