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

C#如何基于枚举存储的ConsoleColor值打印带颜色#的二维数组

解决方案

原代码问题梳理

  • 存在冗余的随机枚举生成、反射逻辑,和实际输出需求无关
  • 没有设置控制台输出的前景色,无法控制#的显示颜色
  • 错误修改了传入的二维数组原始数据,会破坏原有业务数据
  • Console.Write方法参数使用错误,传入的枚举值没有生效
修正后的实现代码

首先你定义的枚举本身是符合要求的,无需修改,仅需要调整展示方法:

void DisplayCandyCrushCandies(CandyCrushCandies[,] playingField)
{
    // 先保存控制台默认颜色,输出完成后恢复,避免影响后续其他输出
    var defaultConsoleColor = Console.ForegroundColor;

    for (int row = 0; row < playingField.GetLength(0); row++)
    {
        for (int col = 0; col < playingField.GetLength(1); col++)
        {
            // 枚举值本身就是ConsoleColor的有效值,直接强转后设置为前景色即可
            Console.ForegroundColor = (ConsoleColor)playingField[row, col];
            // 输出对应颜色的#字符
            Console.Write("# ");
        }
        Console.WriteLine();
    }

    // 恢复控制台默认颜色
    Console.ForegroundColor = defaultConsoleColor;
}
实现说明

你定义的CandyCrushCandies枚举值本身就和ConsoleColor枚举值一一绑定,不需要额外的反射、映射逻辑,直接强制转换就能拿到对应的颜色值,每次输出#前修改Console.ForegroundColor属性即可控制输出字符的颜色。

内容的提问来源于stack exchange,提问作者Abhishek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:54:07