猿问

无法从类内将项目添加到字典中

我正在开展一个学习项目,试图在其中学习更好的实践。我有一个类,Player,除了其他之外,播放器还有 Dictionary 称为 Items,可以在其中存储项目。 Player 仅使用 Name 和 Age 进行初始化,字典在 Player 初始化时应该为空。

除了故事之外,玩家还可以获取将存储在库存中的物品,因此我尝试创建一个可以调用的方法来执行此操作,但是我面临以下问题:

如果该方法不是静态的,则无法从类外部调用它,并出现以下错误:

An object reference is required for the non-static field, method, or property 'Player.AddItems(int, string)'

如果方法是静态的,则不会看到Items 字典,并出现以下错误:

An object reference is required for the non-static field, method, or property 'Player.Items'

我试图从主函数(稍后将成为一个类)中调用它:

Player.AddItems(0, "Wallet");

任何建议表示赞赏。

class Player

    {

        public string Name { get; set; }

        public int Age { get; set; }

        public Dictionary<int, string> Items { get; set; }


        public float Damage { get; set; }


        public float Health { get; set; }


        public Player(string Name, int Age)

        {

            this.Name = Name;

            this.Age = Age;

            this.Items = new Dictionary<int, string>();

            this.Damage = 0;

            this.Health = 20;

        }


        public void AddItems(int key, string item)

        {

            this.Items.Add(key, item);

        }


    }


开满天机
浏览 139回答 1
1回答

红糖糍粑

非静态字段、方法或需要对象引用 属性“Player.AddItems(int, string)”您需要先创建一个对象才能调用类的非静态方法。Player p = new Player("John", "25");p.AddItems(1, "Data");非静态字段、方法或需要对象引用 属性“Player.Items”。您无法从静态方法访问非静态成员PS:您可以直接为属性分配默认值。class Player{&nbsp; &nbsp; public Player(string Name, int Age) : this()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; this.Name = Name;&nbsp; &nbsp; &nbsp; &nbsp; this.Age = Age;&nbsp; &nbsp; }&nbsp; &nbsp; public string Name { get; set; }&nbsp; &nbsp; public int Age { get; set; }&nbsp; &nbsp; public Dictionary<int, string> Items { get; set; } = new Dictionary<int, string>();&nbsp; &nbsp; public float Health { get; set; } = 20;&nbsp; &nbsp; public float Damage { get; set; }&nbsp; &nbsp; public void AddItems(int key, string item)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; this.Items.Add(key, item);&nbsp; &nbsp; }}
随时随地看视频慕课网APP
我要回答