如何在主函数中使用此类?词典和索引器(集合)
本文关键字:索引 集合 函数 | 更新日期: 2023-09-27 18:26:14
我试图在字典数组列表中添加条目,但我不知道在主函数的People类中设置哪些参数。
public class People : DictionaryBase
{
public void Add(Person newPerson)
{
Dictionary.Add(newPerson.Name, newPerson);
}
public void Remove(string name)
{
Dictionary.Remove(name);
}
public Person this[string name]
{
get
{
return (Person)Dictionary[name];
}
set
{
Dictionary[name] = value;
}
}
}
public class Person
{
private string name;
private int age;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
}
使用这个似乎给我错误
static void Main(string[] args)
{
People peop = new People();
peop.Add("Josh", new Person("Josh"));
}
错误2方法"Add"没有重载,需要2个参数
此peop.Add("Josh", new Person("Josh"));
应该是这个吗
var josh = new Person() // parameterless constructor.
{
Name = "Josh" //Setter for name.
};
peop.Add(josh);//adds person to dictionary.
类People
具有方法Add,该方法只接受一个参数:Person对象。人员类上的Add方法将负责为您将其添加到字典中,并提供name(string)参数和Person参数。
Person
类只有一个无参数构造函数,这意味着您需要在setter中设置Name。当您像上面那样实例化对象时,您可以做到这一点。
对于您的设计,这将解决问题:
public class People : DictionaryBase
{
public void Add(string key, Person newPerson)
{
Dictionary.Add(key , newPerson);
}
public void Remove(string name)
{
Dictionary.Remove(name);
}
public Person this[string name]
{
get
{
return (Person)Dictionary[name];
}
set
{
Dictionary[name] = value;
}
}
}
public class Person
{
private string name;
private int age;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
}
总的来说:
People peop = new People();
peop.Add("Josh", new Person() { Name = "Josh" });