C# Switch语句在类中不起作用

C# Switch语句在类中不起作用,c#,C#,我正在开发一个基于文本的RPG,我正在实现一个统计系统。与之交互的类的代码如下: switch (charClass) { case "a": Player.charC(0); break; case "b": Player.charC(1); break; case "c":

我正在开发一个基于文本的RPG,我正在实现一个统计系统。与之交互的类的代码如下:

switch (charClass)
        {
            case "a":
                Player.charC(0);
                break;
            case "b":
                Player.charC(1);
                break;
            case "c":
                Player.charC(2);
                break;
        }

public static void charC(int charPath)
    {
        switch (charPath)
        {
            case 0:
                Player.stats(0);
                break;
            case 1:
                Player.stats(1);
                break;
            case 2:
                Player.stats(2);
                break;
        }
    }

 public static void stats(int stat)
    {

        Player p = new Player();

        switch (stat)
        {
            case 0:
                p.m_health = 200;
                p.m_mana = 75;
                p.fast = 7;
                p.strng = 20;
                p.smrt = 7;
                p.move = 7;
                p.level = 1;
                break;
            case 1:
                p.m_health = 100;
                p.m_mana = 200;
                p.fast = 10;
                p.strng = 7;
                p.smrt = 15;
                p.move = 7;
                p.level = 1;
                break;
            case 2:
                p.m_health = 100;
                p.m_mana = 100;
                p.fast = 10;
                p.strng = 10;
                p.smrt = 10;
                p.move = 10;
                p.level = 1;
                break;
        }
    }
当我尝试运行它时,它将所有统计数据返回为0

示例:最大运行状况0。最大法力0。快速0。强0。智能0。

在stats方法中,您不会返回玩家对象。创建一个新的播放器,设置其属性,但在方法末尾放弃该对象

简而言之:你没有在你认为你正在工作的对象上工作


为什么所有这些都是静态的?

您需要删除静态的统计信息,并使用玩家实例调用它

public void stats(int stat)
{
    switch (stat)
    {
        case 0:
            m_health = 200;
            m_mana = 75;
            fast = 7;
            strng = 20;
            smrt = 7;
            move = 7;
            break;
        case 1:
            m_health = 100;
            m_mana = 200;
            fast = 10;
            strng = 7;
            smrt = 15;
            move = 7;
            break;
        case 2:
            m_health = 100;
            m_mana = 100;
            fast = 10;
            strng = 10;
            smrt = 10;
            move = 10;
            break;
    }
    level = 1;
}
在两个开关中使用player实例,即

    switch (charClass)
    {
        case "a":
            playerInstance.charC(0);
            break;
        case "b":
            playerInstance.charC(1);
            break;
        case "c":
            playerInstance.charC(2);
            break;
    }

public void charC(int charPath)
{
    switch (charPath)
    {
        case 0:
            this.stats(0);
            break;
        case 1:
            this.stats(1);
            break;
        case 2:
            this.stats(2);
            break;
    }
}

我打赌你已经设置了断点并单步执行了代码,不是吗?你试过调试吗?1。Re:它将所有统计数据返回为0,这对于您向我们展示的代码意味着什么?2.Re:当我尝试运行它时:…使用什么特定的输入类?对于您向我们展示的代码,请展示一个简短的编译示例代码,演示该问题。@user3233136请放置一个断点,然后逐行遍历代码。每次检查相关变量是否包含预期包含的值。这样你会发现问题所在。谢谢。这帮了大忙。