gpt4 book ai didi

c# - Dictionary> 和 IDictionary> 之间没有分配兼容性?

转载 作者:行者123 更新时间:2023-11-30 19:18:00 25 4
gpt4 key购买 nike

我正在尝试传递 Dictionary<int, List<T>>进入需要 IDictionary<int, IEnumerable<T>> 的构造函数.

不幸的是,通用 IDictionary未定义为 IDictionary<TKey, out TValue> .也许这没有意义,但是是否有一个转换允许我将我的字典传递给构造函数?

明显的转换 ( (IDictionary<int, IEnumerable<T>>)dictionary) 在运行时失败。

最佳答案

不,因为那样不安全:

Dictionary<int, List<int>> mydictionary = whatever;
Dictionary<int, IEnumerable<int>> converted = (Dictionary<int, IEnumerable<int>>) mydictionary;
converted.Add(10, new int[] { 1, 2, 3 } );

并且您刚刚将数组添加到只能包含列表的字典中。这是不允许的,因为没有办法保证安全。

你注意到字典接口(interface)不是协变的;这正是它不能协变的原因。协变注释中的“out”是一个助记符,告诉您“value 参数仅用于输出”,但显然 value 参数用于输入字典。

关于c# - Dictionary<int, List<T>> 和 IDictionary<int, IEnumerable<T>> 之间没有分配兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14575018/

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