Поскольку вы можете вызывать это без ошибки компилятора:
CrusadersFactory.NateDragon.health
Это означает, что вы действительно создали статическое NateDragon
свойство в вашем CrusadersFactory
.Однако, вы никогда ничего не назначали этому свойству .
public static void CreateNate(string name, int level, int health, int damage)
{
Nate NateDragon = new Nate(name, level, health, damage);
}
То, что вы сделали здесь, объявляется и присваивается локальная переменная .Эта переменная существует только в области действия метода CreateNate
, она не существует вне его.
Вместо этого вам следует назначить статический параметр, в котором вы хотите сохранить его, свой созданный объект:
public static void CreateNate(string name, int level, int health, int damage)
{
CrusadersFactory.NateDragon = new Nate(name, level, health, damage);
}
Поскольку метод CreateNate
также является частью CrusadersFactory
, его можно сократить до:
public static void CreateNate(string name, int level, int health, int damage)
{
NateDragon = new Nate(name, level, health, damage);
}
Проще говоря, когда вы использовали Nate NateDragon = ...
, вы объявили новую переменную, вместо того чтобы обращаться к свойству статического класса NateDragon
, которое вы уже объявили в своем CrusadersFactory
классе.