public sealed override bool Remove(TK key) { return(this.ModifyIf( () => this.RemoveImpl(key), () => { TV value; if (!this.TryGetValue(key, out value)) { return DictionaryEventArgs.NewEventRemoveRange(new TK[0], new TV[0]); } return DictionaryEventArgs.NewEventRemoveRange(new[] { key }, new[] { value }); })); }
public sealed override void RemoveAllKeys(IEnumerable <TK> enumer) { this.Modify( () => this.RemoveAllImpl(enumer), () => { List <TK> keys = new List <TK>(); List <TV> values = new List <TV>(); foreach (TK k in enumer) { TV v; if (this.TryGetValue(k, out v)) { keys.Add(k); values.Add(v); } } return(DictionaryEventArgs.NewEventRemoveRange(keys, values)); }); }