我正在尝试在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。
答案 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
}
}