我做了一个简短的方法,可以更容易地更改控制台颜色。
string c = red;
if (c == "red")
Console.ForegroundColor = ConsoleColor.Red;
我对每种颜色都有这个。我可以只在方法中键入颜色并使用字符串作为颜色名称吗?像:
string c = Red;
Console.ForegroundColor = ConsoleColor.c;
因此我不需要指定每种颜色。我希望你明白我的意思。
答案 0 :(得分:4)
我认为您正在寻找Enum.TryParse
方法,该方法将使用字符串并尝试将其转换为枚举值(在您使用ConsoleColor
枚举的情况下)。如果解析成功,则该方法返回true
,out
参数将包含转换后的值;否则返回false
。
以下是一个采用字符串并在转换成功时更改控制台颜色的方法示例:
static bool TryChangeConsoleForeColor(string newColor)
{
ConsoleColor foreColor;
if (Enum.TryParse(newColor, true, out foreColor))
{
Console.ForegroundColor = foreColor;
return true;
}
return false;
}
<强>用法强>
static void Main()
{
string color = "Red";
Console.WriteLine($"Changing color to '{color}'...");
TryChangeConsoleForeColor(color); // Ignores return value
color = "Car";
Console.WriteLine($"Changing color to '{color}'...");
if (!TryChangeConsoleForeColor(color))
{
// Do something if TryChange fails
Console.WriteLine($"Cannot change color to '{color}'");
}
Console.ResetColor();
Console.Write("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
<强>输出强>
答案 1 :(得分:2)
我认为这可能对您有用:
string color = "Red";
Console.ForegroundColor = (ConsoleColor)System.Enum.Parse(typeof(ConsoleColor), color);
答案 2 :(得分:0)
这不会直接回答你的问题,但也许它可能引导你朝着正确的方向前进。
如果你真的想去那么远,你可以创建一个颜色服务,它具有颜色的属性名称。
如果你采用枚举路线,这些文章可能有所帮助。
https://msdn.microsoft.com/en-us/library/16c1xs4z(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/system.enum.isdefined(v=vs.110).aspx