public bool RemoveIf(TKey key, CheckIfRemove del) => m_RwLock.AcquireWriterLock(() => { if (m_Dictionary.ContainsKey(key) && !del(m_Dictionary[key])) { return(false); } return(m_Dictionary.Remove(key)); });
public bool RemoveIf(TKey key, CheckIfRemove del, out KeyValuePair <TKey, TValue> kvp) { var k = default(KeyValuePair <TKey, TValue>); bool s = m_RwLock.AcquireWriterLock(() => { if (m_Dictionary.ContainsKey(key)) { TValue val = m_Dictionary[key]; if (!del(val)) { return(false); } k = new KeyValuePair <TKey, TValue>(key, val); } return(m_Dictionary.Remove(key)); }); kvp = k; return(s); }