[英]Changing the Key of a Dictionary
我是字典的新手。 非常新的含義,我大約在6個小時前開始使用它們:p。 無論如何,我想知道是否有辦法更改字典的鍵。
這是我的字典:
Dictionary<string, string> Information = new Dictionary<string, string>();
這是我添加到字典中的方式(每次用戶輸入信息並單擊按鈕時都會觸發該字典:
Information.Add(txtObjectNumber.Text, addressCombined);
用戶需要能夠編輯兩個字段以及刪除整個記錄。
因此,應用程序幾乎需要添加txtNumber
和txtComments
,其中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.