C# Switch语句在类中不起作用
我正在开发一个基于文本的RPG,我正在实现一个统计系统。与之交互的类的代码如下:C# Switch语句在类中不起作用,c#,C#,我正在开发一个基于文本的RPG,我正在实现一个统计系统。与之交互的类的代码如下: switch (charClass) { case "a": Player.charC(0); break; case "b": Player.charC(1); break; case "c":
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请放置一个断点,然后逐行遍历代码。每次检查相关变量是否包含预期包含的值。这样你会发现问题所在。谢谢。这帮了大忙。