You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:03:43