我是c#的新手,我正在学习课程。这是我试图编写的一段代码。我只想知道如何从“健康”中减去“伤害”,如下所示: (看结尾)
{{1}}
答案 0 :(得分:11)
您遇到的问题是编译器如何编译此表达式,这与名为operator precedence的主题有关。
基本上它看到了这个:
string + number - number
不幸的是,它首先将字符串与数字结合起来,因此你得到了这个:
string - number
幸运的是,解决方案很简单,添加括号以使编译器在加号之前评估减号:
...his health " + (Health - Damage)
^ ^
+-- add these --+
还有其他方法来编写语句,以便此运算符优先级不起作用。您可以使用string.Format
:
Console.WriteLine(string.Format("{0} Has received {1} Damage which makes his health {2}", Name, Damage, Health - Damage));
分散在.NET Framework中的一些方法甚至支持这种构建内置字符串的方式,而Console.WriteLine
就是其中之一,因此您甚至可以将上述内容缩短为:
Console.WriteLine("{0} Has received {1} Damage which makes his health {2}", Name, Damage, Health - Damage);
或者您可以使用较新的语法string interpolation:
Console.WriteLine($"{Name} Has received {Damage} Damage which makes his health {Health - Damage}");
答案 1 :(得分:1)
虽然@Lasse提供了必要的修改作为答案,但我建议使用格式化字符串。
string.Format("{0} Has received {1} Damage which makes his health {2}", Name, Damage, (Health - Damage));
答案 2 :(得分:-1)
您不能将类用作变量。您应该在类中创建变量并对它们进行操作(创建类的实例,并且在实例上,您将拥有所有变量和方法)。然后你可以轻松地做你想做的事。