gpt4 book ai didi

c# - 为什么字典没有实现 Add(KeyValuePair)

转载 作者:太空狗 更新时间:2023-10-30 00:49:11 24 4
gpt4 key购买 nike

IDictionary<TKey, TValue>从接口(interface)扩展 ICollection<KeyValuePair<TKey, TValue>> , 所以它有一个 Add(KeyValuePair<TKey, TValue> item)方法:

IDictionary<string, object> dic = new Dictionary<string, object>();
dic.Add(new KeyValuePair<string, object>("number", 42)); // Compiles fine

然而,虽然Dictionary<TKey, Tvalue>工具 IDictionary<TKey, TValue> ,它没有这个方法重载:

Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add(new KeyValuePair<string, object>("number", 42)); // Does not compile

这怎么可能?

最佳答案

正如您在 the documentation 中看到的那样在the reference source , Dictionary<TKey, TValue>实现了 ICollection<KeyValuePair<TKey, TValue>> 的这一部分接口(interface)显式

void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> keyValuePair) 
{
Add(keyValuePair.Key, keyValuePair.Value);
}

正如您所发现的,您只能通过转换为 IDictionary<TKey, TValue> 来调用它或 ICollection<KeyValuePair<TKey, TValue>> .

您可能想查看 this related question关于隐式和显式接口(interface)实现之间的区别。

关于c# - 为什么字典没有实现 Add(KeyValuePair),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com