从静态方法创建的资产对象
Assets object created from static method
目前我正在尝试使用从静态方法创建的对象,但它并没有发生。我相信我做错了什么,但我不知道是什么。这是我用来创建对象的代码,这段代码在单独的 class 中,假设它的名称是 CrusadersFactory.cs:
//Method for creating crusader Nate
public static void CreateNate(string name, int level, int health, int damage)
{
Nate NateDragon = new Nate(name, level, health, damage);
//Print the info for the new object NateDragon
Console.WriteLine(NateDragon.name + " " + NateDragon.level + " " + NateDragon.health + " " + NateDragon.damage);
}
这是我尝试使用该对象的方式,此代码在 Program.cs 中:
CrusadersFactory.CreateNate("Nate", 100, 200, 300); //This works in order to create Nate, but It gives error if i try Console.WriteLin(CrusadersFactory.NateDragon.name)
Console.WriteLine("Nate's health is {0}", CrusadersFactory.NateDragon.health);
提前感谢您的回答!
因为您可以在没有编译器错误的情况下调用它:
CrusadersFactory.NateDragon.health
这意味着您确实在 CrusadersFactory
中创建了静态 NateDragon
属性。但是,您从未为此属性分配任何内容。
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 = ...
时,您声明了一个新变量,而不是访问您已经声明的静态 class 属性 NateDragon
你的 CrusadersFactory
class.
您的方法具有 void return 类型(return 没有值)。您应该将其更改为 return 类型 Nate
.
public static Nate CreateNate(string name, int level, int health, int damage)
{
var nate = new Nate(name, level, health, damage);
//Print the info for the new object NateDragon
Console.WriteLine(nate.name + " " + nate.level + " " + nate.health + " " + nate.damage);
return nate;
}
你的用法示例可以变成:
var nate = CrusadersFactory.CreateNate("Nate", 100, 200, 300);
Console.WriteLine("Nate's health is {0}", nate.health);
目前我正在尝试使用从静态方法创建的对象,但它并没有发生。我相信我做错了什么,但我不知道是什么。这是我用来创建对象的代码,这段代码在单独的 class 中,假设它的名称是 CrusadersFactory.cs:
//Method for creating crusader Nate
public static void CreateNate(string name, int level, int health, int damage)
{
Nate NateDragon = new Nate(name, level, health, damage);
//Print the info for the new object NateDragon
Console.WriteLine(NateDragon.name + " " + NateDragon.level + " " + NateDragon.health + " " + NateDragon.damage);
}
这是我尝试使用该对象的方式,此代码在 Program.cs 中:
CrusadersFactory.CreateNate("Nate", 100, 200, 300); //This works in order to create Nate, but It gives error if i try Console.WriteLin(CrusadersFactory.NateDragon.name)
Console.WriteLine("Nate's health is {0}", CrusadersFactory.NateDragon.health);
提前感谢您的回答!
因为您可以在没有编译器错误的情况下调用它:
CrusadersFactory.NateDragon.health
这意味着您确实在 CrusadersFactory
中创建了静态 NateDragon
属性。但是,您从未为此属性分配任何内容。
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 = ...
时,您声明了一个新变量,而不是访问您已经声明的静态 class 属性 NateDragon
你的 CrusadersFactory
class.
您的方法具有 void return 类型(return 没有值)。您应该将其更改为 return 类型 Nate
.
public static Nate CreateNate(string name, int level, int health, int damage)
{
var nate = new Nate(name, level, health, damage);
//Print the info for the new object NateDragon
Console.WriteLine(nate.name + " " + nate.level + " " + nate.health + " " + nate.damage);
return nate;
}
你的用法示例可以变成:
var nate = CrusadersFactory.CreateNate("Nate", 100, 200, 300);
Console.WriteLine("Nate's health is {0}", nate.health);