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;
           }
       }

最终你会得到这个具有大鼠打印功能的链。现在我的问题是我如何定义老鼠来得到老鼠。我来这里工作。

c#对象函数调用

早期…这让我回想起来。

假设您在控制台应用程序中

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);