C#中Console.WriteLine的{0}占位符失效问题求解
解决C#控制台程序中{0}占位符失效的问题
嘿,我一眼就揪出问题啦!你在处理用户输入"Bad"的代码分支里,把字符串拼接和占位符格式化的用法搞混了,这才导致{0}没被正确替换。
先看你出问题的那行代码:
Console.WriteLine("Don't {0} worry everyone always had a bad day :) " + name);
这里你写了{0}占位符,但却用+ name直接把名字拼到了字符串末尾——Console.WriteLine的占位符逻辑是需要把对应的值作为后续参数传进去,而不是直接拼接字符串。这么写的结果就是,{0}会原封不动地显示在输出里,名字反而被生硬地加到句子最后,完全不是你想要的效果。
两种简单的解决办法:
- 正确使用占位符语法
把字符串拼接的+ name删掉,把name作为第二个参数传给Console.WriteLine,让占位符和参数对应上:
Console.WriteLine("Don't {0} worry, everyone has a bad day sometimes :)", name);
- 改用字符串插值(更直观,C# 6+支持)
如果你的项目用的是C# 6或更高版本,字符串插值会让代码可读性更高——直接用$开头标记字符串,把变量放到{}里就行:
Console.WriteLine($"Don't {name} worry, everyone has a bad day sometimes :)");
顺便提个小细节:你代码里的<和>不用转义成<和>哦,控制台输出里直接写<Press Any Key To Continue>就能正常显示尖括号,这只是个小优化,不影响核心功能~
内容的提问来源于stack exchange,提问作者Aleksander Kozłowski
相关产品推荐
相关产品推荐

