C#类开发疑问:如何在字符串拼接中实现Health减Damage运算
解决C#字符串拼接中算术运算的优先级问题
嘿,刚学C#类的知识对吧?你的问题其实是运算符优先级在搞鬼,我来给你掰扯清楚:
你的原代码里,Console.WriteLine里的表达式会因为+(字符串拼接)的优先级比-(算术减法)高,导致程序先把前面所有字符串和Health拼接成一个完整字符串,然后试图用这个字符串减去Damage——这肯定不行啊,字符串和整数没法做减法,编译器直接就报错了。
给你几个靠谱的解决办法:
方法1:用括号改变运算顺序
把Health - Damage用括号包起来,强制让算术运算先执行,再把结果拼接到字符串里:
public void Message() { Console.WriteLine(Name + " Has received " + Damage + " Damage which makes his health " + (Health - Damage)); }
括号的作用就是告诉编译器:先算我里面的内容,再去处理外面的字符串拼接。
方法2:用字符串插值(推荐!)
从C# 6开始支持的字符串插值语法,写起来更简洁,可读性拉满,完全不会有优先级的烦恼:
public void Message() { Console.WriteLine($"{Name} Has received {Damage} Damage which makes his health {Health - Damage}"); }
只需要在字符串前加$,然后用{}把变量或表达式包进去,编译器会自动帮你处理运算和拼接,代码看起来清爽多了。
方法3:使用String.Format
如果是老版本的C#(低于6),可以用String.Format来实现,原理和插值类似,但写法稍微繁琐一点:
public void Message() { Console.WriteLine(string.Format("{0} Has received {1} Damage which makes his health {2}", Name, Damage, Health - Damage)); }
总的来说,字符串插值是现在最推荐的写法,不仅不容易出错,后期维护代码也更方便。
内容的提问来源于stack exchange,提问作者Dawgx
相关产品推荐
相关产品推荐

