如何在主函数中使用此类?词典和索引器(集合)

本文关键字:索引 集合 函数 | 更新日期: 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" });