在C#中创建自定义列表类

时间:2015-10-21 15:39:53

标签: c# list class dictionary

我想创建一个自定义列表的类。所以我已经完成了

 public class Set1 : List<Dictionary<string, string>>
    {

    public Set1() : base(List<Dictionary<string, string>>)         
    {
        List<Dictionary<string, string>> mySet = new List<Dictionary<string, string>>()
        {
            new Dictionary<string, string>()
            {
                {"first_name","John"},
            },
            new Dictionary<string, string>()
            {
                {"last_name","Smith"},
            },

        };

        base(mySet);

    }
}

但是这不能编译。我做错了什么?提前谢谢。

2 个答案:

答案 0 :(得分:2)

你不能像在其他语言中那样从C#中的方法中调用基础/替代构造函数。

但是,在这种情况下你不需要调用基础构造函数 - 你可以这样做:

public Set1()        
{
    this.Add(
        new Dictionary<string, string>()
        {
            {"first_name","John"},
        }
    );
    this.Add(
        new Dictionary<string, string>()
        {
            {"last_name","Smith"},
        }

    );
}

如果确实想要调用基本构造函数,则必须在声明中内联列表:

public Set1()        
 : base( new List<Dictionary<string, string>>
            {
                new Dictionary<string, string>()
                {
                    {"first_name","John"},
                },
                new Dictionary<string, string>()
                {
                    {"last_name","Smith"},
                }
            }
        )
{
    // nothing more to do here
}

但是会创建一个列表,只是让构造函数将项目复制到列表中,从而增加内存使用时间。

答案 1 :(得分:1)

以下是您要查找的代码

new Dictionary<string, string>() {
          {"first_name","John"}, {"last_name","Smith"},
      }.

您无需在此处继承List。你想要的是一些集合的实例。类是数据和行为的通用模板,而不是您为John保存特定信息所定义的内容。

更好的是,为apprioriate事物(一个人)创建一个类,并创建一个List<Person>的实例

    public class Person
    {
        public string Forename {get;set;}
        public string Surname {get;set;}
    }

    ///

    var people = new List<Person>() { new Person("John", "Smith") };