c#返回控制台背景颜色已更改

Yas*_*nke 0 c# enums visual-studio

我正在尝试在c#中更改控制台应用程序的背景

Console.BackgroundColor = ConsoleColor.Blue;
Console.Clear();
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

这完全没问题,但是当我尝试在enum它的帮助和方法的帮助下返回它时.

无法将类型'System.ConsoleColor'隐式转换为'string'

这是守则

public static string SetColor(RanngDe R)
{
    switch (R)
    {
        case RanngDe.Blue:
            return Console.BackgroundColor = ConsoleColor.Blue;
    }   
}


public enum RanngDe
{
    Blue,
    White,
    Red,
    Green
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经知道我必须转换System.ConsoleColor为String,但我不知道如何实现它.

我正在使用Visual Studio 2013.

Mon*_*Zhu 5

方法的签名意味着您需要返回一个字符串.但是System.ConsoleColor如果要将此值作为字符串,则返回值类型,可以使用以下ToString方法返回:

public static string SetColor(RanngDe R)
{
    switch (R)
    {
        case RanngDe.Blue:
            return (Console.BackgroundColor = ConsoleColor.Blue).ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

此示例的调用如下所示:

string c = SetColor(RanngDe.Blue);
Run Code Online (Sandbox Code Playgroud)

另一种解决方案当然是将返回类型更改为ConsoleColor:

public static ConsoleColor SetColor(RanngDe R)
{
    switch (R)
    {
        case RanngDe.Blue:
            return Console.BackgroundColor = ConsoleColor.Blue;
        default: return ConsoleColor.Black;
    }
}
Run Code Online (Sandbox Code Playgroud)

此示例的调用如下所示:

ConsoleColor c = SetColor(RanngDe.Blue);
Run Code Online (Sandbox Code Playgroud)

但是,如果您只想将颜色分配给控制台,那么简单地使用方法void:

public static void SetColor(RanngDe R)
{
    switch (R)
    {
        case RanngDe.Blue:
            Console.BackgroundColor = ConsoleColor.Blue;
                    break;
    }
}
Run Code Online (Sandbox Code Playgroud)

此示例的调用如下所示:

SetColor(RanngDe.Blue);
Run Code Online (Sandbox Code Playgroud)