2017-09-13 46 views
-6

我做了一个简短的方法,以便更改控制台颜色。如何在C#中使用字符串作为方法名称?

string c = red; 
if (c == "red") 
    Console.ForegroundColor = ConsoleColor.Red; 

我对每种颜色都有这个。我可以在方法中输入颜色并使用字符串作为颜色名称吗?像:

string c = Red; 
Console.ForegroundColor = ConsoleColor.c; 

因此,我不需要指定每种颜色。我希望你明白我的意思。

+1

“红” 是不是一个方法名。如果你不使用智能感知,那么你做错了。 –

+2

我想你想要Enum.Parse? –

+0

Red是ConsoleColor枚举的成员。您可以使用Enum.Parse将字符串转换为该枚举并将其设置为ForegroundColor属性。 –

回答

2

我认为这可能对你的作品的目的:

string color = "Red"; 
    Console.ForegroundColor = (ConsoleColor)System.Enum.Parse(typeof(ConsoleColor), color); 
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(); 
} 

输出

enter image description here

相关问题