字典c#列表的字典

本文关键字:字典 列表 | 更新日期: 2023-09-27 18:21:07

我想要这样的字典列表的字典:

Dictionary <string, List<Dictionary<string,string>> field;

但视觉工作室发送给我的错误:

错误CS0305使用泛型类型"Dictionary"需要2个

如何解决这个错误(或者更好地解决我的问题)?

字典c#列表的字典

末尾缺少一个括号:

Dictionary <string, List<Dictionary<string,string>>> field;

TL;DR:您在剥离结束时丢失了一个>,但您应该使用更好的解决方案

您应该尽量避免在其他泛型类型中包含泛型类型等复杂的数据结构,而是创建自己的class

例如:

一个Dictionary,从一个人的名字到他所属的电话公司的Dictionary,再到他在每个公司的电话号码,看起来就像:

Dictionary<string, Dictionary<string, string>> nameToCompanyToNumber;

接下来要做的事情比创建更可读的自定义classes更困难:

class Person
{
    Dictionary<string, string> companyToNumber;
    public string GetPhone(string company)
    {
        return companyToNumber[company];
    }
}

这将使您的代码更加清晰:

List<Person> people;
people.First().GetPhone("AT&T");

代替:

nameToCompanyToNumber["SomePerson"]["AT&T"];

这将要求您每次都尝试了解发生了什么,并使代码更难维护,这就是OOP的全部内容

至于你的编译错误,你最后缺少了一个>

Dictionary<string, List<Dictionary<string,string>>> field;

像这样的字典很管用。尽管您似乎错过了一个结束>,这可能会导致您的问题。

因此:

Dictionary <string, List<Dictionary<string,string>> field;

应为:

Dictionary <string, List<Dictionary<string,string>>> field;

但有一件事来自经验。如果您有如此复杂的数据类型,并且它不是快速而肮脏的,那么您应该重新考虑并考虑使用类。

至少在以后,类将比这样一个复杂的字典更易于维护,也不那么令人困惑(不仅在以后,而且在其他人必须修改您的代码时)。