我正在学习C#,我正在尝试制作游戏,但我遇到了问题。我有两个课程,我称之为Item
和Weapon
,Weapon
看起来像这样:
class Weapon : Item
{
int damage;
int durability;
public void asd()
{
Weapon shortSword = new Weapon();
shortSword.dmg = 5;
shortSword.durability = 20;
Weapon woodenBow = new Weapon();
woodenBow.dmg = 3;
woodenBow.durability = 15;
}
}
然后我有另一个包含不同方法的类,当玩家走在一个项目上并且它应该随机化该项时,会调用其中一个。但是我无法从另一个班级到达Weapon
中的对象。我如何联系他们,或解决这个问题?
答案 0 :(得分:5)
您的设计存在问题。创建武器的方法不应该是Weapon
类的实例方法。它可能是一个静态方法,或者甚至可能是某个其他类的方法。
您的方法应该返回集合中的武器或IEnumerable
。
public class Weapon : Item
{
public int Damage { get; set; }
public int Durability { get; set; }
// Consider moving this method to another class.
public static IEnumerable<Weapon> CreateWeapons()
{
List<Weapon> weapons = new List<Weapon>();
Weapon shortSword = new Weapon { Damage = 5, Durability = 20 };
weapons.Add(shortSword);
Weapon woodenBow = new Weapon { Damage = 3, Durability = 15 };
weapons.Add(woodenBow);
return weapons;
}
}
我还使用了对象初始化器语法来使代码更简洁,并整理了一些方法/属性命名。