作者:qqian | 来源:互联网 | 2022-12-07 17:26
ImmutableDictionary
有一个TryAdd
它得到的方法System.Collections.Generic.CollectionExtensions
(由于某种原因,我在DotNetPeek中找不到)
所以这个编译:
ImmutableDictionary d = ImmutableDictionary.Empty;
bool b = d.TryAdd(1, 1);
但是我不明白它的作用是什么?它不应该返回一个新的ImmutableDictionary?
1> Jonathon Cha..:
ImmutableDictionary.Add确实返回一个带有值的新ImmutableDictionary.你所指的扩展方法看起来像是来自这里.
我不建议将此扩展方法与不可变字典一起使用,因为虽然这将编译,但您将NotSupportedException
在运行时获得.
看了一下,根据这个,显式接口实现IDictionary.Add
将简单抛出NotSupportedException
,这似乎是合适的.
从源头上看,
void IDictionary.Add(TKey key, TValue value)
{
throw new NotSupportedException();
}
@kofifus它没有.它真的应该只实现`IReadOnlyDictionary`.