我以为在VB和C#中枚举相同或至少非常相似。然后今天我偶然发现了我们VB代码中的一个错误。以下VB代码编译和运行没有问题:在VB中枚举错误,它是如何不同于在C#中的枚举?
Enum Cars
Subaru
Volvo
End Enum
Enum Vegtables
Carrots
Beets
End Enum
Sub Main()
Foo(Cars.Subaru)
Foo(Vegtables.Carrots)
End Sub
Public Sub Foo(ByVal value As Cars)
End Sub
但在C#中的等价正确地显示了一个错误:
enum Cars
{
Subaru,
Volvo
}
enum Vegtables
{
Carrots,
Beets
}
class Program
{
static void Main(string[] args)
{
Foo(Cars.Subaru);
Foo(Vegtables.Carrots);//<-- C# detects a type mismatch here
}
public static void Foo(Cars carsValue)
{}
}
为什么VB的版本没有赶上类型不匹配?在VB和C#中枚举不同?
这回答我的问题,但我希望解释他们是如何不同。 –