使用字符串进行算术运算的Concat结果

时间:2018-04-25 06:02:56

标签: c#

我是c#的新手,我正在学习课程。这是我试图编写的一段代码。我只想知道如何从“健康”中减去“伤害”,如下所示: (看结尾)

{{1}}

3 个答案:

答案 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)

您不能将类用作变量。您应该在类中创建变量并对它们进行操作(创建类的实例,并且在实例上,您将拥有所有变量和方法)。然后你可以轻松地做你想做的事。