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

时间:2017-04-04 10:39:46

标签: c# visual-studio enums

我正在尝试在c#

中更改控制台应用程序的背景
Console.BackgroundColor = ConsoleColor.Blue;
Console.Clear();
Console.ReadKey();

这完全正常,但是当我尝试在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
}

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

我正在使用Visual Studio 2013。

3 个答案:

答案 0 :(得分:5)

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

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

此示例的调用如下所示:

string c = SetColor(RanngDe.Blue);

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

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

此示例的调用如下所示:

ConsoleColor c = SetColor(RanngDe.Blue);

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

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

此示例的调用如下所示:

SetColor(RanngDe.Blue);

答案 1 :(得分:2)

更改您的方法以返回void而不是string

class Program
{
    static void Main(string[] args)
    {
        SetColor(RanngDe.Blue);
        Console.Clear();
        Console.ReadKey();
    }
    public static void SetColor(RanngDe R)
    {
        switch (R)
        {
            case RanngDe.Blue:
                 Console.BackgroundColor = ConsoleColor.Blue;
                break;

                // other case statements
        }
    }
}
public enum RanngDe
{
    Blue,
    White,
    Red,
    Green
}

答案 2 :(得分:0)

您应该使用void函数来设置背景颜色

public static void SetColor(RanngDe R)
{
    switch (R)
    {
        case RanngDe.Blue:
            Console.BackgroundColor = ConsoleColor.Blue;
            break;
        // rest of your code  
     }
}