为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
开满天机 2023-12-17 20:04:36
我正在开展一个学习项目,试图在其中学习更好的实践。我有一个类,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);        }    }
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

非静态字段、方法或需要对象引用 属性“Player.AddItems(int, string)”


您需要先创建一个对象才能调用类的非静态方法。


Player p = new Player("John", "25");

p.AddItems(1, "Data");

非静态字段、方法或需要对象引用 属性“Player.Items”。


您无法从静态方法访问非静态成员


PS:您可以直接为属性分配默认值。


class Player

{

    public Player(string Name, int Age) : this()

    {

        this.Name = Name;

        this.Age = Age;

    }


    public string Name { get; set; }


    public int Age { get; set; }


    public Dictionary<int, string> Items { get; set; } = new Dictionary<int, string>();


    public float Health { get; set; } = 20;


    public float Damage { get; set; }


    public void AddItems(int key, string item)

    {

        this.Items.Add(key, item);

    }


}


查看完整回答
反对 回复 2023-12-17
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信