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,“钱包”)代码>