如何使用C#Struct(Windows控制台游戏)

问题描述 投票:-1回答:2

我必须编写Windows控制台-怪物战斗模拟-游戏我想使用一个公共结构来保存字符统计信息(int HP,AP,S,字符串竞赛...。)但是我真的不知道如何在主程序中使用该结构。感谢您的帮助:)

c# struct windows-console
2个回答
0
投票

这样的事情。将来,我建议您查找有关如何使用遇到问题的示例。在线有大量使用结构的示例。无论如何,你去了:

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

}

0
投票

您可以这样使用它:

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

© www.soinside.com 2019 - 2024. All rights reserved.