Обычные словари не имеют этой функциональности в качестве атомарной операции, но ConcurrentDictionary<TKey,TValue>
делает .
ConcurrentDictionary<string,string> myDic = new ConcurrentDictionary<string,string>();
myDic["key1"] = "value1";
string removed;
if (myDic.TryRemove("key1", out removed))
{
Console.WriteLine($"We have just remove {removed}");
}
Вы могли бы написать метод расширения для обычного словаря, чтобы реализовать это, но если вы обеспокоены тем, что он атомарный, ConcurrentDictionary, вероятно, более подходит для вашего варианта использования.