我不确定这是否有效 C#,但希望您能明白。 :)
switch (msg.GetType()) {
case ClassA:
// blah
case ClassB:
// blah 2
case ClassC:
// blah 3
}
如何使用 VB.NET 的 Select Case
来切换对象的类型?
我知道有些人可能会建议使用 polymorphism ,但我使用的是小消息类的层次结构,因此这在我的情况下确实不起作用。
最佳答案
使用 VB 2010,对于面向 .NET Framework 4 及更高版本的项目,您现在可以执行以下操作:
Select Case msg.GetType()
Case GetType(ClassA)
End Select
在早期的 VB 版本中,它不起作用,因为您无法比较两种类型是否相等。您必须使用 Is 关键字检查它们是否指向相同的引用。在 Select Case 中不可能执行此操作,除非您按照 Michael 的建议使用 Name 或 FullName 等类型的属性进行比较。不过,您可以组合使用 If 和 ElseIf:
Dim type = msg.GetType()
If type Is GetType(ClassA)
...
ElseIf type Is GetType(ClassB)
...
...
End If
关于vb.net - 在 VB.NET 中选择对象类型的大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301881/