Vb.net 如何将用户输入(字符串)转换为ConsoleColor?

Vb.net 如何将用户输入(字符串)转换为ConsoleColor?,vb.net,Vb.net,显然,我不想使用14个不同的If语句和两个不同的变量。我正在寻找一种更短更简单的方法,将字符串转换为其各自的控制台颜色,并更改前景色,然后写入标准输出流,询问用户颜色更改是否正确。VB说“Expression Expected.”“Enum”在哪里,尽管这是我在互联网上找到的唯一一个与我要查找的代码相近的代码。顺便说一句,对不起,我对编程很陌生 有什么帮助吗 Console.WriteLine("WHAT'S YOUR FAVORITE COLOR?") charlie = Console.Re

显然,我不想使用14个不同的If语句和两个不同的变量。我正在寻找一种更短更简单的方法,将字符串转换为其各自的控制台颜色,并更改前景色,然后写入标准输出流,询问用户颜色更改是否正确。VB说“Expression Expected.”“Enum”在哪里,尽管这是我在互联网上找到的唯一一个与我要查找的代码相近的代码。顺便说一句,对不起,我对编程很陌生

有什么帮助吗

Console.WriteLine("WHAT'S YOUR FAVORITE COLOR?")
charlie = Console.ReadLine()

Console.WriteLine("This line is...")
Console.ForegroundColor = CType(Enum.Parse(GetType(ConsoleColor), charlie, true), ConsoleColor)

delta = CStr(charlie)
Console.WriteLine(delta + "? (yes/no)")
Console.ForegroundColor = System.ConsoleColor.Green
foxtrot = Console.ReadLine()

进一步思考:由于您不能信任输入字符串,因此最好使用
TryParse
而不是
Parse

  Dim temp As ConsoleColor

  If [Enum].TryParse(charlie, True, temp) Then
     Console.ForegroundColor = temp
     Console.WriteLine("This line is...{0}? (yes/no)", charlie)
  Else
     Console.WriteLine("{0} is not a valid ConsoleColor name or value", charlie)
  End If

你考虑过使用Enum.Parse吗?我考虑过。这就是第一个“Console.ForegroundColor=“.Oops抱歉,快速阅读,然后我不得不关闭一个行为不正常的浏览器:-(尝试将关键字Enum放在方括号中:
[Enum].Parse(…)
。我的VB没有它可能的那么强大,我认为这与此有关。您不需要CType调用,因为
Enum.Parse
应该返回第一个参数(即
ConsoleColor
)描述的类型的实例。您需要重试捕获,因为字符串
Charlie
可能包含无效的颜色名称。