c# - 不可变字典尝试添加

标签 c#

ImmutableDictionary 有一个 TryAdd 方法,它从 System.Collections.Generic.CollectionExtensions 获取(出于某种原因我无法在点网点)

所以编译:

ImmutableDictionary<int, int> d = ImmutableDictionary<int, int>.Empty;
bool b = d.TryAdd(1, 1);

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

最佳答案

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

我不建议将此扩展方法与 Immutable 字典一起使用,因为虽然这可以编译,但您将得到 NotSupportedException在运行时。

进一步观察,according to this, IDictionary<T,TR>.Add 的显式接口(interface)实现只会抛出 NotSupportedException ,这似乎是合适的。

From the source,

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

关于c# - 不可变字典尝试添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51850940/

相关文章:

c# - 将枚举列表存储在Azure表存储中

c# - 调用 Web 服务时出现 HTTP 407 代理身份验证错误

c# - 如何使用 RadioButton 使其他 RadioButton 可见?

c# - Mac 上的 .net 文件下载仅附加 .JPEG

c# - 插入前检查重复项 (C#.net)

c# - 在与 WPF 样式上的 setter 属性不同的类型上使用触发器属性

c# - VS2017上SQL Server连接超时

c# - 抛出类型为 'System.OutOfMemoryException' 的异常。 C# 使用内存流时

c# - 注册系统.UnauthorizedAccessException

c# - 检测 WP7 应用程序处于空闲状态并执行某些任务