[英]C# Multiple Keys to one Value
我正在尋找可以將多個鍵映射到單個對象的C#容器。 例如:一個人可以用他的英文名字或他的西班牙名字來引用。 我這樣做是為了不必創建多個字典副本,並且當我從結構中添加/刪除時,我只需要添加/刪除一次。 是否存在這樣的結構?
是的,它存在: Dictionary<TKey, TValue>
沒有理由不能添加具有多個鍵的單個對象實例:
public class Person
{
public string EnglishName { get; set; }
public string SpanishName { get; set; }
}
public static class PersonDictExtensions
{
public static void AddPerson(this IDictionary<string, Person> persons, Person person)
{
persons.Add(person.EnglishName, person);
persons.Add(person.SpanishName, person);
}
public static void RemovePerson(this IDictionary<string, Person> persons, Person person)
{
foreach (var item in persons.Where(x => object.ReferenceEquals(x.Value, person)).ToList())
{
persons.Remove(item.Key);
}
}
}
var person = new Person { EnglishName = "Foo", SpanishName = "Bar" };
var dict = new Dictionary<string, Person>();
dict.AddPerson(person);
dict.RemovePerson(person);
我了解EDIT Ups:只有一個添加和刪除嗎? 嗯 不知道存在這樣的結構。 也許您可以添加擴展方法來處理這種情況。
我更改了代碼...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.