我基本上是一个C#开发者,但最近在写VB.Net代码。
今天我遇到了一个非常不同的.Net行为。
C#代码:
enum Color
{
Red,
Green,
Blue
}
class Demo
{
public static void Main()
{
System.Console.WriteLine(Color.Red);
}
}
这段代码输出的是 Red
但当使用VB.Net编写该代码时,它会输出0
。
VB.Net 代码
Module Module1
Sub Main()
System.Console.WriteLine(Color.Red)
End Sub
End Module
Enum Color
Red
Green
Blue
End Enum
为什么如此不同?
WriteLine
方法期望一个字符串时,您正在使用数字Color.Red
。C#处理此问题的方式似乎是自动调用返回“Red”的ToString
方法,而VB将数字0转换为字符串“0”。在这两种语言中,您可以通过使用Color.Red.ToString()
来确保写入的内容是“Red”。 - BlackwoodConsole.WriteLine(Color.Red.ToString())
将打印枚举名称,否则它将打印值。至于“为什么”,这可能只有来自 MS 的人才能回答。 - Ňɏssa PøngjǣrdenlarpConsole.WriteLine(0)
。 - Bjørn-Roger Kringsjå