ImmutableDictionary TryAdd

时间:2018-08-14 23:18:49

标签: c#

ImmutableDictionary有一个TryAdd的{​​{1}}方法(出于某种原因,我在DotNetPeek中找不到它)

因此,它将编译:

System.Collections.Generic.CollectionExtensions

但是我不明白它的作用是什么?它不应该返回一个新的ImmutableDictionary吗?

2 个答案:

答案 0 :(得分:6)

ImmutableDictionary.Add确实确实返回了具有该值的新ImmutableDictionary。您所指的扩展方法看起来像是from here

我不建议将此扩展方法与不可变字典一起使用,因为它将在编译时在运行时得到NotSupportedException

再看一点,according to this,IDictionary<T,TR>.Add的显式接口实现将简单地抛出NotSupportedException,这似乎是合适的。

From the source,

void IDictionary<TKey, TValue>.Add(TKey key, TValue value)   
{
    throw new NotSupportedException();
}

答案 1 :(得分:2)

TryAdd可能绑定到IDictionary<TKey, TValue>实现的ImmutableDictionary<TKey, TValue>。可能它没有ImmutableDictionary的任何知识,并且遵循Try...模式产生了bool值。