我想创建一个自定义列表的类。所以我已经完成了
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);
}
}
但是这不能编译。我做错了什么?提前谢谢。
答案 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") };