public BiDictionary(Dictionary <T1, T2> keysToValue) { KeyToValue = keysToValue; foreach (var keyValue in keysToValue) { ValueToKey.Add(keyValue.Value, keyValue.Key); } }
public void Remove(T1 key) { if (KeyToValue.TryGetValue(key, out T2 value)) { KeyToValue.Remove(key); ValueToKey.Remove(value); } }
public void Remove(T2 value) { if (ValueToKey.TryGetValue(value, out T1 key)) { ValueToKey.Remove(value); KeyToValue.Remove(key); } }
public T2 this[T1 key] { get { return(KeyToValue[key]); } set { T2 oldValue = KeyToValue[key]; if (!oldValue.Equals(value)) { ValueToKey.Remove(oldValue); KeyToValue[key] = value; ValueToKey[value] = key; } } }
public bool ContainsValue(T2 value) { return(ValueToKey.ContainsKey(value)); }
public bool TryGet(T2 value, out T1 key) { return(ValueToKey.TryGetValue(value, out key)); }
public void Add(T1 key, T2 value) { KeyToValue.Add(key, value); ValueToKey.Add(value, key); }