2017-09-13 86 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

相關問題