更改字典的键

时间:2012-06-13 20:56:09

标签: c# dictionary

我对词典很新。我大约6小时前开始使用它们的新意义:p。无论如何,我想知道是否有办法改变字典的键。

这是我的字典:

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

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

Information.Add(txtObjectNumber.Text, addressCombined);

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

因此,应用程序需要添加txtNumbertxtComments txtNumber = txtObjectNumber

感谢您的帮助。

5 个答案:

答案 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;