c#对象函数调用
所以我开始学习c#,我遇到了一些问题。。。我试图为我的游戏机rpg游戏创建一个兽人游戏,但我遇到了一堵墙。在我的monsters类中,我有一个用于monster对象的类构造函数,并且我有一个函数,可以以动物风格打印数据c#对象函数调用,c#,oop,game-engine,C#,Oop,Game Engine,所以我开始学习c#,我遇到了一些问题。。。我试图为我的游戏机rpg游戏创建一个兽人游戏,但我遇到了一堵墙。在我的monsters类中,我有一个用于monster对象的类构造函数,并且我有一个函数,可以以动物风格打印数据 public void Mprint() { Console.WriteLine(name); Console.WriteLine("Class: " + mclass); Console.Write
public void Mprint()
{
Console.WriteLine(name);
Console.WriteLine("Class: " + mclass);
Console.WriteLine("HP: " + healthmax);
Console.WriteLine("Atk: " + atk);
Console.WriteLine("Exp drop: " + expdrop);
Console.WriteLine("Description: ");
Console.WriteLine(description);
}
然后我有一个空白,要求输入,然后使用switch语句将您放入链中,并最终进入所需输入:
switch (monsterchoice)
{
case 1:
rat.Mprint();
break;
default:
Console.WriteLine();
Console.WriteLine("Make sure that you are using the number next to the name of the monster you choose.");
Console.ReadKey();
BestiaryBeast();
break;
}
}
最终,你会看到这条具有鼠印功能的链条。现在我的问题是,我在哪里定义rat来让rat.Mprint在这里工作。任何帮助都将不胜感激。早期。。。这让我回想起过去 假设您在控制台应用程序中
class Program
{
static void Main()
{
Monster rat = new Monster("a", "b");
List<Monster> monsters = new List<Monster> { rat };
foreach (var monster in monsters)
{
monster.Mprint();
}
}
}
类程序
{
静态void Main()
{
怪物鼠=新怪物(“a”、“b”);
列出怪物=新列表{rat};
foreach(怪物中的怪物)
{
monster.Mprint();
}
}
}
这将创建一个rat对象并填充它。
它将把它添加到怪物列表中
然后将打印出怪物
祝您好运与任何变量一样,在使用它之前必须声明它(如果您忘记了这一点,编译器会告诉您!)。所以这个代码很好:
Monster rat = null;
switch (monsterchoice)
{
case 1:
rat.Mprint();
break;
default:
...
}
这就是:
switch (monsterchoice)
{
case 1:
{
Monster rat = null;
rat.Mprint();
break;
}
default:
...
}
第二个不太可能是您想要做的,因为在每个case语句中声明变量有点奇怪,但它是有效的。现在,这两个变量都将抛出一个NullReferenceException
,因为您没有将变量设置为实际对象。所以这些线实际上应该是:
一点建议;不要在类中嵌入类的使用者(例如,控制台窗口)。你的
Monster
类应该如下所示:
public class Monster
{
public string Name { get; private set; }
public int HitPoints { get; set; }
public string CharacterSheet
{
get
{
return Name + Environment.NewLine
+ "HP: " + HitPoints;
}
}
public Monster(string name, int hp)
{
Name = name;
HitPoints = hp;
}
}
然后,您将使用如下代码打印您的字符表:
Console.WriteLine(rat.CharacterSheet);
只要老鼠被宣布为“怪物”并被初始化,你拥有它的方式应该是好的。您需要在switch语句之前或其内部使用“var rat=new Monster()”。
Console.WriteLine(rat.CharacterSheet);