gpt4 book ai didi

c# - Mono C# 奇怪的控制台颜色

转载 作者:太空狗 更新时间:2023-10-30 01:33:51 28 4
gpt4 key购买 nike

我有这个 Console 艺术功能,

public static void Ask(string message)
{
ConsoleColor previousColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.White;
Console.Write (message);
Console.Write (" : ");
Console.ForegroundColor = previousColor;
}

这是我的Main()

Console.WriteLine("Hello World");
Ask("Roll No");

打印出来的两个white颜色不一样,如下图

Screenshot

在调试器中,我可以看到 previousColor 也是 ConsoleColor.White

最佳答案

这是一个偶尔会引起混淆的领域。称之为限制而不是错误。

有两个相关的因素:

  1. 大多数在 X 中实现颜色的终端都像 xterm 和 rxvt 自 1990 年代中期以来所做的那样:终端最初可以有默认前景和指定的背景颜色,ANSI(和扩展)颜色是后来添加的。与 Linux 控制台不同,无法保证默认ANSI 颜色相关。

    VTE(终端的功能部分)和 Konsole 都遵循了该设计。

    引自 xterm 的 manual reverseVideo 的描述表明 ANSI 颜色与终端使用的默认颜色之间存在区别:

               Other control sequences can alter the foreground and background               colors which are used:               o   Programs can also use the ANSI color control  sequences  to                   set the foreground and background colors.               o   Extensions  to the ANSI color controls (such as 16-, 88- or                   256-colors) are treated similarly to the ANSI control.               o   Using other control sequences (the  "dynamic  colors"  fea-                   ture),  a  program can change the foreground and background                   colors.
  1. Mono Console 被编写来模仿(并且在某些部分,改编 block )ncurses。 ncurses 常见问题 Ncurses resets my colors to white/black请注意,ncurses 假定默认颜色为黑底白字 — Console 也遵循该设计。

    它本可以更进一步地遵循 ncurses 以更加清楚通过告诉终端绘制白色文本而完成的显式“白色”与隐式“白色”(通过将颜色重置为其默认值)之间的区别。

关于c# - Mono C# 奇怪的控制台颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32402200/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com