c#对象函数调用
本文关键字:函数调用 对象 | 更新日期: 2023-09-27 18:15:05
所以我开始学习c#,我遇到了一些问题…我正尝试着为我的掌机rpg游戏创造一个动物故事,但我遇到了瓶颈。在我的monsters类中,我有一个用于怪物对象的类构造函数,还有一个以怪兽样式打印数据的函数。
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;
}
}
最终你会得到这个具有大鼠打印功能的链。现在我的问题是我如何定义老鼠来得到老鼠。我来这里工作。
早期…这让我回想起来。
假设您在控制台应用程序中
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();
}
}
}
这将创建一个老鼠对象并填充它。它会把它添加到怪物列表中然后将打印出怪物。
好运与任何变量一样,您必须在使用它之前声明它(如果您忘记了这一点,编译器会告诉您!)这段代码没问题:
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 rat = new Rat(); //Or Monster, depending on your class design
一点建议;不要在类中嵌入类的使用者(例如,Console窗口)。您的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);