簡體   English   中英

更改字典鍵

[英]Changing the Key of a Dictionary

我是字典的新手。 非常新的含義,我大約在6個小時前開始使用它們:p。 無論如何,我想知道是否有辦法更改字典的鍵。

這是我的字典:

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

這是我添加到字典中的方式(每次用戶輸入信息並單擊按鈕時都會觸發該字典:

Information.Add(txtObjectNumber.Text, addressCombined);

用戶需要能夠編輯兩個字段以及刪除整個記錄。

因此,應用程序幾乎需要添加txtNumbertxtComments ,其中txtNumber = txtObjectNumber

謝謝您的幫助。

無法直接修改密鑰。 您必須將其刪除並重新添加。

關鍵是使您以后可以找到數據(“值”)的機制。

例如,如果您做了

information.Add("Kris", "Vandermotten");

如果您知道“ 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()方法。 或者,您可以通過遍歷集合來用困難的方式做到這一點。 盡管我很好奇為什么您需要不斷更新鍵,而不僅僅是值。

您不能更改現有詞典項的鍵。 您可以做的就是刪除先前的鍵,然后根據編輯添加新的鍵/值。

用例示例:

添加鍵:名稱,值:Bob

現在,您想將Name更改為FirstName ,您必須做

從字典中刪除鍵Name添加鍵:名字,值:鮑勃

您在這里使用字典似乎有些偏離。 顧名思義,字典旨在為您提供一種基於鍵來“查找”值的方法。 但是,就您而言,您似乎正在使用它來存儲兩個相關的數據,其中任何一個都可以更改。 在這種情況下,最好只使用一個列表,然后創建一個單獨的類來封裝這兩部分信息。 就像是

public class MyData
{
    public string SomeData { get; set; }
    public string OtherData { get; set; }
}

然后

List<MyData> myDataList;

或者,您甚至可能希望擁有一個將不變的鍵(可能是用戶ID)映射到自定義類的字典:

Dictionary<string, MyData> myDataDictionary;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM