C# 无法从类中向词典添加项

C# 无法从类中向词典添加项,c#,C#,我正在做一个学习项目,在这个项目中我试图学习更好的实践。我有一个类,Player,Player还有一个名为Items的Dictionary,可以存储项目。播放器初始化时仅使用名称和年龄,在播放器初始化时字典应为空 除了故事之外,玩家还可以获得将存储在库存中的物品,因此我尝试创建一个可以调用的方法来实现这一点,但我面临以下问题: 如果该方法不是静态的,则无法从类外部调用它,错误如下: 非静态字段、方法或属性“Player.AddItems(int,string)”需要对象引用 如果该方法是静态的,

我正在做一个学习项目,在这个项目中我试图学习更好的实践。我有一个类,
Player
,Player还有一个名为
Items
Dictionary
,可以存储项目。播放器初始化时仅使用
名称
年龄
,在播放器初始化时字典应为空

除了故事之外,玩家还可以获得将存储在库存中的物品,因此我尝试创建一个可以调用的方法来实现这一点,但我面临以下问题:

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

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

如果该方法是静态的,则不会看到带有以下错误的
字典:

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

我试图通过以下方式从主函数(稍后将成为一个类)调用它:

Player.AddItems(0,“钱包”)

如有任何建议,我们将不胜感激

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);
        }

    }
职业玩家
{
公共字符串名称{get;set;}
公共整数{get;set;}
公共字典项{get;set;}
公共浮动损坏{get;set;}
公共浮点运行状况{get;set;}
公共播放器(字符串名称,整数)
{
this.Name=Name;
这个。年龄=年龄;
this.Items=newdictionary();
这个。损害=0;
这是健康=20;
}
公共void附加项(整型键、字符串项)
{
此.Items.Add(键,项);
}
}
非静态字段、方法或对象需要对象引用 属性'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);
    }

}
职业玩家
{
公共播放器(字符串名称,整数年龄):this()
{
this.Name=Name;
这个。年龄=年龄;
}
公共字符串名称{get;set;}
公共整数{get;set;}
公共字典项{get;set;}=new Dictionary();
公共浮点运行状况{get;set;}=20;
公共浮动损坏{get;set;}
公共void附加项(整型键、字符串项)
{
此.Items.Add(键,项);
}
}

播放器
是一种类型。为了调用非静态方法,您需要上述类型的实例。例如,
var myPlayer=新玩家(…);myPlayer.AddItems(…)。编写一个播放器类的目的是可以有多个播放器。玩家的每个实例都代表一个不同的玩家,拥有自己的姓名、年龄、物品等。因此,如果你想向玩家添加物品,你需要创建一个玩家并将物品添加到他的个人物品字典中。如果您想稍后查看该播放器的项目,您需要将该播放器实例、实际对象保留在变量中或
列表中或其他内容中。感谢您的解释,不知道我怎么会忘记我需要一个对象来保存该数据,而不是尝试将项目添加到类中非常感谢指针,我忽略了这一点,我需要向对象而不是类添加项,了解如何直接将默认值设置为属性非常有帮助<代码>玩家=新玩家(CharacterName,CharacterAge)
player.AddItems(0,“钱包”)