0

我正在尝试在字典数组列表中添加条目,但我不知道要在主函数的 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 方法“添加”没有重载需要 2 个参数

4

2 回答 2

1

这个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 对象。people 类方法上的 Add 将负责为您将其添加到字典中,并提供名称(字符串)参数和 Person 参数。

你的Person类只有一个无参数的构造函数,这意味着你需要在 setter 中设置你的 Name。当您像上面那样实例化对象时,您可以这样做。

于 2013-08-04T15:53:55.960 回答
1

对于您的设计,这将解决问题:

    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" });
于 2013-08-04T16:06:39.353 回答