字典<学生类型,列表<学生>>到 IDictionary>?
请考虑以下代码:
class Student
{
}
enum StudentType
{
}
static void foo(IDictionary<StudentType, IList<Student>> students)
{
}
static void Main(string[] args)
{
Dictionary<StudentType, List<Student>> studentDict =
new Dictionary<StudentType, List<Student>>();
foo(studentDict);
...
}
有错误:
错误 CS1503:参数“1”:不能 转换自 'System.Collections.Generic.Dictionary>' 到 'System.Collections.Generic.IDictionary>'
有什么办法可以调用 foo 函数吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 Linq ToDictionary 方法创建一个新字典,其中值具有正确的类型:
You could use the Linq ToDictionary method to create a new dictionary where the value has the correct type:
您将构建一个具有正确类型的新字典,将数据从旧字典复制到新字典中。
或者,您可以将原始字典更改为正确的类型。
不管怎样,不,你不能投射字典。
此限制的原因如下:
You will have build a new dictionary with the right types, copying the data from the old one into the new one.
Or, you could change the original dictionary to be of the right type to begin with.
Either way, no, you can't cast the dictionary.
The reason for this limitation is as follows:
将 StudentDict 的创建更改为:
change the creation of studentDict to be: