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
相关产品推荐
相关产品推荐

