我必须编写Windows控制台-怪物战斗模拟-游戏我想使用一个公共结构来保存字符统计信息(int HP,AP,S,字符串竞赛...。)但是我真的不知道如何在主程序中使用该结构。感谢您的帮助:)
这样的事情。将来,我建议您查找有关如何使用遇到问题的示例。在线有大量使用结构的示例。无论如何,你去了:
public class Game
{
struct Monster
{
int hp;
string race;
// etc.
}
private static void Main(string[] args)
{
Monster myMonster;
myMonster.hp = 10;
myMonster.race = "Elf";
Console.WriteLine("Monster's hp is:" + myMonster.hp.ToString());
Console.WriteLine("Monster's race is:" + myMonster.race);
Console.ReadLine();
}
}
您可以这样使用它:
public class Game
{
public struct Monster
{
public int Hp { get; set; }
public string Race { get; set; }
public Monster(int hp, string race)
{
Hp = hp;
Race = race;
}
}
private static void Main(string[] args)
{
Monster myMonster = new Monster(10, "Ogre");
Console.WriteLine("Monster's hp is:" + myMonster.Hp.ToString());
Console.WriteLine("Monster's race is:" + myMonster.Race);
Console.ReadLine();
}
}
还有一个关于结构的重要主题。它们是值类型,因此具有值类型语义],而与引用类型且具有引用类型语义的类相反。人们发现的一个常见问题是,将这些参数作为参数传递给方法时,首先将值类型(struct
)复制,然后将此副本传递给该方法,因此对struct
的任何修改都仅限于该方法方法上下文。对于引用类型(a class
),引用将传递给方法,因此在方法内部对其进行的任何更改都将反映在方法外部,因为引用指向内存中的特定对象实例。还需要注意其他事项,例如,值类型与引用类型相比没有内存开销,并且您必须显式初始化其每个字段。您应该检查official reference文档的结构,同样要检查classes。