如何仅修改单条Console.WriteLine语句的输出背景色
问题原因与解决方法
你原来的写法存在两个问题:
Console.BackgroundColor = ConsoleColor.Green是对控制台全局属性的修改,只要赋值后没有恢复,后续所有输出的背景色都会沿用这个值- 你把赋值操作作为
Console.WriteLine的第二个参数传入,这里的第二个参数是复合格式串的填充参数,不会对控制台样式产生任何作用,自然达不到预期效果
正确的实现逻辑是:输出目标内容前先保存控制台默认的背景色,修改为你需要的颜色,输出完成后立刻恢复默认背景色即可,只有中间输出的内容会应用指定的背景色。
示例代码如下:
// 存储原背景色 var defaultBgColor = Console.BackgroundColor; // 修改为目标背景色 Console.BackgroundColor = ConsoleColor.Green; // 输出需要特殊样式的内容 Console.WriteLine("healing spell:"); // 恢复原背景色,后续输出不受影响 Console.BackgroundColor = defaultBgColor; // 测试后续输出 Console.WriteLine("后续内容不会携带绿色背景");
如果你需要同时修改文字的前景色,也是同样的操作逻辑:提前存储Console.ForegroundColor的默认值,使用完成后恢复即可。
内容的提问来源于stack exchange,提问作者emmanuel
相关产品推荐
相关产品推荐

