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 メソッド 'Add' のオーバーロードは 2 つの引数を取らない

4

2 に答える 2

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 に答える
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には、引数を 1 つだけ取る Add メソッドがあります: Person オブジェクトです。People クラス メソッドの Add は、それを辞書に追加し、名前 (文字列) 引数と Person 引数の両方を提供します。

クラスにはパラメーターなしのコンストラクターしかありませPersonん。つまり、セッターで Name を設定する必要があります。上記のようにオブジェクトをインスタンス化すると、これを行うことができます。

于 2013-08-04T15:53:55.960 に答える