在c#中创建自定义列表类
本文关键字:列表 自定义 创建 | 更新日期: 2023-09-27 18:18:51
我想创建一个自定义列表类。所以我写了
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);
}
}
但是这不能编译。请问我做错了什么?
在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
}
,但它创建了一个列表,只是让构造函数将项目复制到列表中,在短时间内增加了内存使用。
这是你要找的代码
new Dictionary<string, string>() {
{"first_name","John"}, {"last_name","Smith"},
}.
这里不需要继承List。你想要的是某个集合的实例。类是数据和行为的通用模板,而不是为John定义的用来保存特定信息的东西。
更好的是,为合适的事物(人)创建一个类,并创建一个List<Person>
的实例
public class Person
{
public string Forename {get;set;}
public string Surname {get;set;}
}
///
var people = new List<Person>() { new Person("John", "Smith") };