2012-09-09 46 views
0

我正在学习C#,我正在尝试制作游戏,但遇到问题。我有两个班,我称之为ItemWeaponWeapon看起来是这样的:C#达到不同类别的对象

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

可能重复[如何访问其他类中的不同类的变量?](http://stackoverflow.com/questions/4507822/how-to-access-variables-in-different-class-from-other-类) –

+2

“达到武器中的物体”是什么意思?你能提供一个你想要的代码的例子吗?例如,您提到的其他课程的摘录。 – millimoose

回答

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

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

+0

感谢您的回答!我会阅读IEnumerable。它似乎工作! – user1621127