我正在开展一个学习项目,试图在其中学习更好的实践。我有一个类,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);
}
}
- 1 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消