C#从其他类中获取对象

时间:2012-09-09 13:40:55

标签: c# winforms

我正在学习C#,我正在尝试制作游戏,但我遇到了问题。我有两个课程,我称之为ItemWeaponWeapon看起来像这样:

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中的对象。我如何联系他们,或解决这个问题?

1 个答案:

答案 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;
    }
}

我还使用了对象初始化器语法来使代码更简洁,并整理了一些方法/属性命名。